mirror of
https://github.com/python/cpython.git
synced 2025-10-09 16:34:44 +00:00
bpo-37902: IDLE: Add scrolling for IDLE browsers. (#15368)
Modify the wheel event handler so it can also be used for module, path, and stack browsers. Patch by George Zhang.
This commit is contained in:
parent
87bd2071c7
commit
2cd9025858
7 changed files with 78 additions and 21 deletions
|
@ -4,7 +4,7 @@ from idlelib import tree
|
|||
import unittest
|
||||
from test.support import requires
|
||||
requires('gui')
|
||||
from tkinter import Tk
|
||||
from tkinter import Tk, EventType, SCROLL
|
||||
|
||||
|
||||
class TreeTest(unittest.TestCase):
|
||||
|
@ -29,5 +29,32 @@ class TreeTest(unittest.TestCase):
|
|||
node.expand()
|
||||
|
||||
|
||||
class TestScrollEvent(unittest.TestCase):
|
||||
|
||||
def test_wheel_event(self):
|
||||
# Fake widget class containing `yview` only.
|
||||
class _Widget:
|
||||
def __init__(widget, *expected):
|
||||
widget.expected = expected
|
||||
def yview(widget, *args):
|
||||
self.assertTupleEqual(widget.expected, args)
|
||||
# Fake event class
|
||||
class _Event:
|
||||
pass
|
||||
# (type, delta, num, amount)
|
||||
tests = ((EventType.MouseWheel, 120, -1, -5),
|
||||
(EventType.MouseWheel, -120, -1, 5),
|
||||
(EventType.ButtonPress, -1, 4, -5),
|
||||
(EventType.ButtonPress, -1, 5, 5))
|
||||
|
||||
event = _Event()
|
||||
for ty, delta, num, amount in tests:
|
||||
event.type = ty
|
||||
event.delta = delta
|
||||
event.num = num
|
||||
res = tree.wheel_event(event, _Widget(SCROLL, amount, "units"))
|
||||
self.assertEqual(res, "break")
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.main(verbosity=2)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue