From ecb8a61e1d61f1796e56cb5627ba46893210a49c Mon Sep 17 00:00:00 2001 From: Tal Einat Date: Sun, 5 Aug 2018 15:47:02 +0300 Subject: [PATCH 1/3] bpo-34047: IDLE: fix mousewheel scrolling direction on macOS --- Lib/idlelib/editor.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Lib/idlelib/editor.py b/Lib/idlelib/editor.py index 1a163891c27d45..126575da39f9cd 100644 --- a/Lib/idlelib/editor.py +++ b/Lib/idlelib/editor.py @@ -458,7 +458,7 @@ def handle_yview(self, event, *args): def mousescroll(self, event): "Handle scroll wheel." - up = {EventType.MouseWheel: event.delta >= 0 == darwin, + up = {EventType.MouseWheel: (event.delta >= 0) == darwin, EventType.Button: event.num == 4} lines = 5 if up[event.type]: From dfa0f4686ef28e77bea9e8653894cc28458f24e9 Mon Sep 17 00:00:00 2001 From: Tal Einat Date: Sun, 5 Aug 2018 15:50:11 +0300 Subject: [PATCH 2/3] bpo-34047: add NEWS entry --- Misc/NEWS.d/next/IDLE/2018-08-05-15-49-55.bpo-34047.LGKsIm.rst | 1 + 1 file changed, 1 insertion(+) create mode 100644 Misc/NEWS.d/next/IDLE/2018-08-05-15-49-55.bpo-34047.LGKsIm.rst 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 00000000000000..a247908ba844a7 --- /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. From feea15ad62c775c8bb27e194be2048fc509b1653 Mon Sep 17 00:00:00 2001 From: Terry Jan Reedy Date: Sun, 5 Aug 2018 22:53:56 -0400 Subject: [PATCH 3/3] Replace mousescroll, augment htest. --- Lib/idlelib/editor.py | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/Lib/idlelib/editor.py b/Lib/idlelib/editor.py index 126575da39f9cd..227a74deb82d3f 100644 --- a/Lib/idlelib/editor.py +++ b/Lib/idlelib/editor.py @@ -457,12 +457,19 @@ def handle_yview(self, event, *args): 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)