diff options
author | Terry Jan Reedy <tjreedy@udel.edu> | 2014-09-05 00:59:41 (GMT) |
---|---|---|
committer | Terry Jan Reedy <tjreedy@udel.edu> | 2014-09-05 00:59:41 (GMT) |
commit | d43ffc9aba8d3a594486d2488bf3e3dfb50a43b2 (patch) | |
tree | 6644442e9e18d0d3e336ec17474e4e45092c86d7 | |
parent | be74668dd56da9e6203811e34e54496b7a2917cb (diff) | |
download | cpython-d43ffc9aba8d3a594486d2488bf3e3dfb50a43b2.zip cpython-d43ffc9aba8d3a594486d2488bf3e3dfb50a43b2.tar.gz cpython-d43ffc9aba8d3a594486d2488bf3e3dfb50a43b2.tar.bz2 |
Issue #21933: Make Control-Mousewhell only change font size and not also scroll.
Original patch by Serhiy Storchaka.
-rwxr-xr-x | Lib/turtledemo/__main__.py | 40 |
1 files 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('<Control-MouseWheel>', self.update_mousewheel) + text.bind('<Control-Button-4>', self.increase_size) + text.bind('<Control-Button-5>', 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('<Configure>', 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('<Configure>', 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('<Control-MouseWheel>', self.update_mousewheel) - widget.bind('<Control-Button-4>', self.increase_size) - widget.bind('<Control-Button-5>', 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, |