[Python-checkins] cpython (3.4): Issue #21933: Make Control-Mousewhell only change font size and not also scroll.

terry.reedy python-checkins at python.org
Fri Sep 5 03:01:15 CEST 2014


http://hg.python.org/cpython/rev/ecc98ea50bc3
changeset:   92341:ecc98ea50bc3
branch:      3.4
parent:      92327:b2e9d845bc6c
user:        Terry Jan Reedy <tjreedy at udel.edu>
date:        Thu Sep 04 20:59:41 2014 -0400
summary:
  Issue #21933: Make Control-Mousewhell only change font size and not also scroll.
Original patch by Serhiy Storchaka.

files:
  Lib/turtledemo/__main__.py |  40 +++++++++++++------------
  1 files changed, 21 insertions(+), 19 deletions(-)


diff --git a/Lib/turtledemo/__main__.py b/Lib/turtledemo/__main__.py
--- 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 @@
         self.hbar = hbar = Scrollbar(text_frame, name='hbar', orient=HORIZONTAL)
         hbar['command'] = text.xview
         hbar.pack(side=BOTTOM, fill=X)
+        text['yscrollcommand'] = vbar.set
+        text['xscrollcommand'] = hbar.set
 
         text['font'] = tuple(txtfont)
-        text['yscrollcommand'] = vbar.set
-        text['xscrollcommand'] = hbar.set
+        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 @@
         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 @@
         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 @@
 
     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,

-- 
Repository URL: http://hg.python.org/cpython


More information about the Python-checkins mailing list