Skip to content

Commit d85b6ee

Browse files
committed
Fix rubberband visibility for tk backend
1 parent 333fcaf commit d85b6ee

File tree

1 file changed

+20
-10
lines changed

1 file changed

+20
-10
lines changed

lib/matplotlib/backends/_backend_tk.py

+20-10
Original file line numberDiff line numberDiff line change
@@ -212,7 +212,8 @@ def filter_destroy(event):
212212

213213
self._tkcanvas.focus_set()
214214

215-
self._rubberband_rect = None
215+
self._rubberband_rect_black = None
216+
self._rubberband_rect_white = None
216217

217218
def _update_device_pixel_ratio(self, event=None):
218219
# Tk gives scaling with respect to 72 DPI, but Windows screens are
@@ -667,21 +668,30 @@ def set_message(self, s):
667668

668669
def draw_rubberband(self, event, x0, y0, x1, y1):
669670
# Block copied from remove_rubberband for backend_tools convenience.
670-
if self.canvas._rubberband_rect:
671-
self.canvas._tkcanvas.delete(self.canvas._rubberband_rect)
671+
if self.canvas._rubberband_rect_white:
672+
self.canvas._tkcanvas.delete(self.canvas._rubberband_rect_white)
673+
if self.canvas._rubberband_rect_black:
674+
self.canvas._tkcanvas.delete(self.canvas._rubberband_rect_black)
672675
height = self.canvas.figure.bbox.height
673676
y0 = height - y0
674677
y1 = height - y1
675-
self.canvas._rubberband_rect = self.canvas._tkcanvas.create_rectangle(
676-
x0, y0, x1, y1)
678+
self.canvas._rubberband_rect_white = (
679+
self.canvas._tkcanvas.create_rectangle(
680+
x0, y0, x1, y1, outline='white'))
681+
self.canvas._rubberband_rect_black = (
682+
self.canvas._tkcanvas.create_rectangle(
683+
x0, y0, x1, y1, dash=(1, 1)))
677684

678685
def remove_rubberband(self):
679-
if self.canvas._rubberband_rect:
680-
self.canvas._tkcanvas.delete(self.canvas._rubberband_rect)
681-
self.canvas._rubberband_rect = None
686+
if self.canvas._rubberband_rect_white:
687+
self.canvas._tkcanvas.delete(self.canvas._rubberband_rect_white)
688+
self.canvas._rubberband_rect_white = None
689+
if self.canvas._rubberband_rect_black:
690+
self.canvas._tkcanvas.delete(self.canvas._rubberband_rect_black)
691+
self.canvas._rubberband_rect_black = None
682692

683693
lastrect = _api.deprecated("3.6")(
684-
property(lambda self: self.canvas._rubberband_rect))
694+
property(lambda self: self.canvas._rubberband_rect_black))
685695

686696
def _set_image_for_button(self, button):
687697
"""
@@ -907,7 +917,7 @@ def remove_rubberband(self):
907917
self._make_classic_style_pseudo_toolbar())
908918

909919
lastrect = _api.deprecated("3.6")(
910-
property(lambda self: self.figure.canvas._rubberband_rect))
920+
property(lambda self: self.figure.canvas._rubberband_rect_black))
911921

912922

913923
@_api.deprecated("3.5", alternative="ToolSetCursor")

0 commit comments

Comments
 (0)