Skip to content

Commit

Permalink
bpo-34047: IDLE: fix mousewheel scrolling direction on macOS (pythonG…
Browse files Browse the repository at this point in the history
  • Loading branch information
taleinat authored Aug 10, 2018
1 parent b92c526 commit 077059e
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 6 deletions.
23 changes: 17 additions & 6 deletions Lib/idlelib/editor.py
Original file line number Diff line number Diff line change
Expand Up @@ -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'

Expand Down Expand Up @@ -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)

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Fixed mousewheel scrolling direction on macOS.

0 comments on commit 077059e

Please sign in to comment.