From f751fb025f3b2abbce707e4574538a13d9b11819 Mon Sep 17 00:00:00 2001 From: Oscar Gustafsson Date: Thu, 22 Sep 2022 16:53:54 +0200 Subject: [PATCH 1/3] Fix rubberband visibility for wx backend --- lib/matplotlib/backends/backend_wx.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/lib/matplotlib/backends/backend_wx.py b/lib/matplotlib/backends/backend_wx.py index 952dd27a3903..559b1609cd06 100644 --- a/lib/matplotlib/backends/backend_wx.py +++ b/lib/matplotlib/backends/backend_wx.py @@ -508,6 +508,8 @@ def __init__(self, parent, id, figure=None): _log.debug("%s - __init__() - bitmap w:%d h:%d", type(self), w, h) self._isDrawn = False self._rubberband_rect = None + self._rubberband_pen_black = wx.Pen('BLACK', 1, wx.PENSTYLE_SHORT_DASH) + self._rubberband_pen_white = wx.Pen('WHITE', 1, wx.PENSTYLE_SOLID) self.Bind(wx.EVT_SIZE, self._on_size) self.Bind(wx.EVT_PAINT, self._on_paint) @@ -626,10 +628,10 @@ def gui_repaint(self, drawDC=None): if self._rubberband_rect is not None: # Some versions of wx+python don't support numpy.float64 here. x0, y0, x1, y1 = map(int, self._rubberband_rect) - drawDC.DrawLineList( - [(x0, y0, x1, y0), (x1, y0, x1, y1), - (x0, y0, x0, y1), (x0, y1, x1, y1)], - wx.Pen('BLACK', 1, wx.PENSTYLE_SHORT_DASH)) + rect = [(x0, y0, x1, y0), (x1, y0, x1, y1), + (x0, y0, x0, y1), (x0, y1, x1, y1)] + drawDC.DrawLineList(rect, self._rubberband_pen_white) + drawDC.DrawLineList(rect, self._rubberband_pen_black) filetypes = { **FigureCanvasBase.filetypes, From 1e278c7e3296bce4fffb85ecf156a388d9a3268e Mon Sep 17 00:00:00 2001 From: Oscar Gustafsson Date: Thu, 22 Sep 2022 17:05:45 +0200 Subject: [PATCH 2/3] Fix rubberband visibility for tk backend --- lib/matplotlib/backends/_backend_tk.py | 30 +++++++++++++++++--------- 1 file changed, 20 insertions(+), 10 deletions(-) diff --git a/lib/matplotlib/backends/_backend_tk.py b/lib/matplotlib/backends/_backend_tk.py index 5d92e35469c2..7617d76e2591 100644 --- a/lib/matplotlib/backends/_backend_tk.py +++ b/lib/matplotlib/backends/_backend_tk.py @@ -212,7 +212,8 @@ def filter_destroy(event): self._tkcanvas.focus_set() - self._rubberband_rect = None + self._rubberband_rect_black = None + self._rubberband_rect_white = None def _update_device_pixel_ratio(self, event=None): # Tk gives scaling with respect to 72 DPI, but Windows screens are @@ -667,21 +668,30 @@ def set_message(self, s): def draw_rubberband(self, event, x0, y0, x1, y1): # Block copied from remove_rubberband for backend_tools convenience. - if self.canvas._rubberband_rect: - self.canvas._tkcanvas.delete(self.canvas._rubberband_rect) + if self.canvas._rubberband_rect_white: + self.canvas._tkcanvas.delete(self.canvas._rubberband_rect_white) + if self.canvas._rubberband_rect_black: + self.canvas._tkcanvas.delete(self.canvas._rubberband_rect_black) height = self.canvas.figure.bbox.height y0 = height - y0 y1 = height - y1 - self.canvas._rubberband_rect = self.canvas._tkcanvas.create_rectangle( - x0, y0, x1, y1) + self.canvas._rubberband_rect_black = ( + self.canvas._tkcanvas.create_rectangle( + x0, y0, x1, y1)) + self.canvas._rubberband_rect_white = ( + self.canvas._tkcanvas.create_rectangle( + x0, y0, x1, y1, outline='white', dash=(3, 3))) def remove_rubberband(self): - if self.canvas._rubberband_rect: - self.canvas._tkcanvas.delete(self.canvas._rubberband_rect) - self.canvas._rubberband_rect = None + if self.canvas._rubberband_rect_white: + self.canvas._tkcanvas.delete(self.canvas._rubberband_rect_white) + self.canvas._rubberband_rect_white = None + if self.canvas._rubberband_rect_black: + self.canvas._tkcanvas.delete(self.canvas._rubberband_rect_black) + self.canvas._rubberband_rect_black = None lastrect = _api.deprecated("3.6")( - property(lambda self: self.canvas._rubberband_rect)) + property(lambda self: self.canvas._rubberband_rect_black)) def _set_image_for_button(self, button): """ @@ -907,7 +917,7 @@ def remove_rubberband(self): self._make_classic_style_pseudo_toolbar()) lastrect = _api.deprecated("3.6")( - property(lambda self: self.figure.canvas._rubberband_rect)) + property(lambda self: self.figure.canvas._rubberband_rect_black)) @_api.deprecated("3.5", alternative="ToolSetCursor") From 0f9b73dedc32754765f23226e25c129284e6cec1 Mon Sep 17 00:00:00 2001 From: Oscar Gustafsson Date: Sat, 15 Oct 2022 12:46:07 +0200 Subject: [PATCH 3/3] Improve bounds of wx rubberband --- lib/matplotlib/backends/backend_wx.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/matplotlib/backends/backend_wx.py b/lib/matplotlib/backends/backend_wx.py index 559b1609cd06..4d88547b865d 100644 --- a/lib/matplotlib/backends/backend_wx.py +++ b/lib/matplotlib/backends/backend_wx.py @@ -627,7 +627,7 @@ def gui_repaint(self, drawDC=None): drawDC.DrawBitmap(bmp, 0, 0) if self._rubberband_rect is not None: # Some versions of wx+python don't support numpy.float64 here. - x0, y0, x1, y1 = map(int, self._rubberband_rect) + x0, y0, x1, y1 = map(round, self._rubberband_rect) rect = [(x0, y0, x1, y0), (x1, y0, x1, y1), (x0, y0, x0, y1), (x0, y1, x1, y1)] drawDC.DrawLineList(rect, self._rubberband_pen_white) pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy