From d43ffc9aba8d3a594486d2488bf3e3dfb50a43b2 Mon Sep 17 00:00:00 2001 From: Terry Jan Reedy Date: Thu, 4 Sep 2014 20:59:41 -0400 Subject: Issue #21933: Make Control-Mousewhell only change font size and not also scroll. Original patch by Serhiy Storchaka. --- Lib/turtledemo/__main__.py | 40 +++++++++++++++++++++------------------- 1 file changed, 21 insertions(+), 19 deletions(-) diff --git a/Lib/turtledemo/__main__.py b/Lib/turtledemo/__main__.py index 4166d26..4b6e389 100755 --- a/Lib/turtledemo/__main__.py +++ b/Lib/turtledemo/__main__.py @@ -19,8 +19,9 @@ The demo viewer windows can be resized. The divider between text and canvas can be moved by grabbing it with the mouse. The text font - size can be changed from the menu and with Control/Command- '-'/'+'. - It can also be changed on most systems with Control-mousewheel. + size can be changed from the menu and with Control/Command '-'/'+'. + It can also be changed on most systems with Control-mousewheel + when the mouse is over the text. Press START button to start the demo. Stop execution by pressing the STOP button. @@ -210,10 +211,19 @@ class DemoWindow(object): self.hbar = hbar = Scrollbar(text_frame, name='hbar', orient=HORIZONTAL) hbar['command'] = text.xview hbar.pack(side=BOTTOM, fill=X) - - text['font'] = tuple(txtfont) text['yscrollcommand'] = vbar.set text['xscrollcommand'] = hbar.set + + text['font'] = tuple(txtfont) + shortcut = 'Command' if darwin else 'Control' + text.bind_all('<%s-minus>' % shortcut, self.decrease_size) + text.bind_all('<%s-underscore>' % shortcut, self.decrease_size) + text.bind_all('<%s-equal>' % shortcut, self.increase_size) + text.bind_all('<%s-plus>' % shortcut, self.increase_size) + text.bind('', self.update_mousewheel) + text.bind('', self.increase_size) + text.bind('', self.decrease_size) + text.pack(side=LEFT, fill=BOTH, expand=1) return text_frame @@ -224,7 +234,7 @@ class DemoWindow(object): turtle._Screen._canvas = self._canvas = canvas = turtle.ScrolledCanvas( root, 800, 600, self.canvwidth, self.canvheight) canvas.adjustScrolls() - self.makeBindings(canvas._rootwindow) + canvas._rootwindow.bind('', self.onResize) canvas._canvas['borderwidth'] = 0 self.screen = _s_ = turtle.Screen() @@ -233,18 +243,6 @@ class DemoWindow(object): turtle.RawTurtle.screens = [_s_] return canvas - def makeBindings(self, widget): - widget.bind('', self.onResize) - - shortcut = 'Command' if darwin else 'Control' - widget.bind_all('<%s-minus>' % shortcut, self.decrease_size) - widget.bind_all('<%s-underscore>' % shortcut, self.decrease_size) - widget.bind_all('<%s-equal>' % shortcut, self.increase_size) - widget.bind_all('<%s-plus>' % shortcut, self.increase_size) - widget.bind_all('', self.update_mousewheel) - widget.bind('', self.increase_size) - widget.bind('', self.decrease_size) - def set_txtsize(self, size): txtfont[1] = size self.text['font'] = tuple(txtfont) @@ -252,15 +250,19 @@ class DemoWindow(object): def decrease_size(self, dummy=None): self.set_txtsize(max(txtfont[1] - 1, MINIMUM_FONT_SIZE)) + return 'break' def increase_size(self, dummy=None): self.set_txtsize(min(txtfont[1] + 1, MAXIMUM_FONT_SIZE)) + return 'break' def update_mousewheel(self, event): # For wheel up, event.delte = 120 on Windows, -1 on darwin. # X-11 sends Control-Button-4 event instead. - (self.decrease_size() if (event.delta < 0 and not darwin) - else self.increase_size()) + if (event.delta < 0) == (not darwin): + return self.decrease_size() + else: + return self.increase_size() def configGUI(self, start, stop, clear, txt="", color="blue"): self.start_btn.config(state=start, -- cgit v0.12