bpo-34047: IDLE: fix mousewheel scrolling direction on macOS (GH-8678)

This commit is contained in:
Tal Einat 2018-08-10 09:02:08 +03:00 committed by GitHub
parent b92c526ed5
commit 077059e0f0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 18 additions and 6 deletions

View File

@ -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)

View File

@ -0,0 +1 @@
Fixed mousewheel scrolling direction on macOS.