diff options
author | Tal Einat <taleinat+github@gmail.com> | 2018-08-10 06:02:08 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-08-10 06:02:08 (GMT) |
commit | 077059e0f086cf8c8b7fb9d1f053e38ddc743f59 (patch) | |
tree | dce6f8e91c1396b854575524c6b21bd96e6c209a /Lib/idlelib | |
parent | b92c526ed5da474694f89e29d82565f2a654c29b (diff) | |
download | cpython-077059e0f086cf8c8b7fb9d1f053e38ddc743f59.zip cpython-077059e0f086cf8c8b7fb9d1f053e38ddc743f59.tar.gz cpython-077059e0f086cf8c8b7fb9d1f053e38ddc743f59.tar.bz2 |
bpo-34047: IDLE: fix mousewheel scrolling direction on macOS (GH-8678)
Diffstat (limited to 'Lib/idlelib')
-rw-r--r-- | Lib/idlelib/editor.py | 23 |
1 files changed, 17 insertions, 6 deletions
diff --git a/Lib/idlelib/editor.py b/Lib/idlelib/editor.py index 1a16389..227a74d 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("<<close-all-windows>>", edit.close_event) + text = edit.text + text['height'] = 10 + for i in range(20): + text.insert('insert', ' '*i + str(i) + '\n') + # text.bind("<<close-all-windows>>", edit.close_event) # Does not stop error, neither does following # edit.text.bind("<<close-window>>", edit.close_event) |