From: Tal Einat Date: Fri, 10 Aug 2018 06:02:08 +0000 (+0300) Subject: bpo-34047: IDLE: fix mousewheel scrolling direction on macOS (GH-8678) X-Git-Tag: v3.8.0a1~1223 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=077059e0f086cf8c8b7fb9d1f053e38ddc743f59;p=python bpo-34047: IDLE: fix mousewheel scrolling direction on macOS (GH-8678) --- diff --git a/Lib/idlelib/editor.py b/Lib/idlelib/editor.py index 1a163891c2..227a74deb8 100644 --- a/Lib/idlelib/editor.py +++ b/Lib/idlelib/editor.py @@ -457,12 +457,19 @@ class EditorWindow(object): return 'break' def mousescroll(self, event): - "Handle scroll wheel." - up = {EventType.MouseWheel: event.delta >= 0 == darwin, + """Handle scrollwheel event. + + For wheel up, event.delta = 120*n on Windows, -1*n on darwin, + where n can be > 1 if one scrolls fast. Flicking the wheel + generates up to maybe 20 events with n up to 10 or more 1. + Macs use wheel down (delta = 1*n) to scroll up, so positive + delta means to scroll up on both systems. + + X-11 sends Control-Button-4 event instead. + """ + up = {EventType.MouseWheel: event.delta > 0, EventType.Button: event.num == 4} - lines = 5 - if up[event.type]: - lines = -lines + lines = -5 if up[event.type] else 5 self.text.yview_scroll(lines, 'units') return 'break' @@ -1701,7 +1708,11 @@ def _editor_window(parent): # htest # filename = None macosx.setupApp(root, None) edit = EditorWindow(root=root, filename=filename) - edit.text.bind("<>", edit.close_event) + text = edit.text + text['height'] = 10 + for i in range(20): + text.insert('insert', ' '*i + str(i) + '\n') + # text.bind("<>", edit.close_event) # Does not stop error, neither does following # edit.text.bind("<>", edit.close_event) diff --git a/Misc/NEWS.d/next/IDLE/2018-08-05-15-49-55.bpo-34047.LGKsIm.rst b/Misc/NEWS.d/next/IDLE/2018-08-05-15-49-55.bpo-34047.LGKsIm.rst new file mode 100644 index 0000000000..a247908ba8 --- /dev/null +++ b/Misc/NEWS.d/next/IDLE/2018-08-05-15-49-55.bpo-34047.LGKsIm.rst @@ -0,0 +1 @@ +Fixed mousewheel scrolling direction on macOS.