summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTerry Jan Reedy <tjreedy@udel.edu>2014-09-05 00:59:41 (GMT)
committerTerry Jan Reedy <tjreedy@udel.edu>2014-09-05 00:59:41 (GMT)
commitd43ffc9aba8d3a594486d2488bf3e3dfb50a43b2 (patch)
tree6644442e9e18d0d3e336ec17474e4e45092c86d7
parentbe74668dd56da9e6203811e34e54496b7a2917cb (diff)
downloadcpython-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-xLib/turtledemo/__main__.py40
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,