Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit e995c58

Browse filesBrowse files
[3.11] gh-103820: IDLE: Do not interpret buttons 4/5 as scrolling on non-X11 (GH-103821) (GH-114902)
Also fix test_mousewheel: do not skip a check which was broken due to incorrect delta on Aqua and XQuartz, and probably not because of `.update_idletasks()`. (cherry picked from commit d25d4ee) Co-authored-by: Christopher Chavez <chrischavez@gmx.us>
1 parent 1eb791c commit e995c58
Copy full SHA for e995c58

File tree

4 files changed

+25
-14
lines changed
Filter options

4 files changed

+25
-14
lines changed

‎Lib/idlelib/editor.py

Copy file name to clipboardExpand all lines: Lib/idlelib/editor.py
+3-2Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -166,8 +166,9 @@ def __init__(self, flist=None, filename=None, key=None, root=None):
166166
text.bind("<3>",self.right_menu_event)
167167

168168
text.bind('<MouseWheel>', wheel_event)
169-
text.bind('<Button-4>', wheel_event)
170-
text.bind('<Button-5>', wheel_event)
169+
if text._windowingsystem == 'x11':
170+
text.bind('<Button-4>', wheel_event)
171+
text.bind('<Button-5>', wheel_event)
171172
text.bind('<Configure>', self.handle_winconfig)
172173
text.bind("<<cut>>", self.cut)
173174
text.bind("<<copy>>", self.copy)

‎Lib/idlelib/idle_test/test_sidebar.py

Copy file name to clipboardExpand all lines: Lib/idlelib/idle_test/test_sidebar.py
+14-8Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -690,16 +690,22 @@ def test_mousewheel(self):
690690
last_lineno = get_end_linenumber(text)
691691
self.assertIsNotNone(text.dlineinfo(text.index(f'{last_lineno}.0')))
692692

693-
# Scroll up using the <MouseWheel> event.
694-
# The meaning of delta is platform-dependent.
695-
delta = -1 if sys.platform == 'darwin' else 120
696-
sidebar.canvas.event_generate('<MouseWheel>', x=0, y=0, delta=delta)
693+
# Delta for <MouseWheel>, whose meaning is platform-dependent.
694+
delta = 1 if sidebar.canvas._windowingsystem == 'aqua' else 120
695+
696+
# Scroll up.
697+
if sidebar.canvas._windowingsystem == 'x11':
698+
sidebar.canvas.event_generate('<Button-4>', x=0, y=0)
699+
else:
700+
sidebar.canvas.event_generate('<MouseWheel>', x=0, y=0, delta=delta)
697701
yield
698-
if sys.platform != 'darwin': # .update_idletasks() does not work.
699-
self.assertIsNone(text.dlineinfo(text.index(f'{last_lineno}.0')))
702+
self.assertIsNone(text.dlineinfo(text.index(f'{last_lineno}.0')))
700703

701-
# Scroll back down using the <Button-5> event.
702-
sidebar.canvas.event_generate('<Button-5>', x=0, y=0)
704+
# Scroll back down.
705+
if sidebar.canvas._windowingsystem == 'x11':
706+
sidebar.canvas.event_generate('<Button-5>', x=0, y=0)
707+
else:
708+
sidebar.canvas.event_generate('<MouseWheel>', x=0, y=0, delta=-delta)
703709
yield
704710
self.assertIsNotNone(text.dlineinfo(text.index(f'{last_lineno}.0')))
705711

‎Lib/idlelib/tree.py

Copy file name to clipboardExpand all lines: Lib/idlelib/tree.py
+6-4Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -285,8 +285,9 @@ def drawtext(self):
285285
self.label.bind("<1>", self.select_or_edit)
286286
self.label.bind("<Double-1>", self.flip)
287287
self.label.bind("<MouseWheel>", lambda e: wheel_event(e, self.canvas))
288-
self.label.bind("<Button-4>", lambda e: wheel_event(e, self.canvas))
289-
self.label.bind("<Button-5>", lambda e: wheel_event(e, self.canvas))
288+
if self.label._windowingsystem == 'x11':
289+
self.label.bind("<Button-4>", lambda e: wheel_event(e, self.canvas))
290+
self.label.bind("<Button-5>", lambda e: wheel_event(e, self.canvas))
290291
self.text_id = id
291292

292293
def select_or_edit(self, event=None):
@@ -460,8 +461,9 @@ def __init__(self, master, **opts):
460461
self.canvas.bind("<Key-Up>", self.unit_up)
461462
self.canvas.bind("<Key-Down>", self.unit_down)
462463
self.canvas.bind("<MouseWheel>", wheel_event)
463-
self.canvas.bind("<Button-4>", wheel_event)
464-
self.canvas.bind("<Button-5>", wheel_event)
464+
if self.canvas._windowingsystem == 'x11':
465+
self.canvas.bind("<Button-4>", wheel_event)
466+
self.canvas.bind("<Button-5>", wheel_event)
465467
#if isinstance(master, Toplevel) or isinstance(master, Tk):
466468
self.canvas.bind("<Alt-Key-2>", self.zoom_height)
467469
self.canvas.focus_set()
+2Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
Revise IDLE bindings so that events from mouse button 4/5 on non-X11
2+
windowing systems (i.e. Win32 and Aqua) are not mistaken for scrolling.

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.