diff options
author | GeeTransit <geetransit@gmail.com> | 2019-09-04 21:33:34 -0400 |
---|---|---|
committer | Terry Jan Reedy <tjreedy@udel.edu> | 2019-09-04 21:33:33 -0400 |
commit | 2cd902585815582eb059e3b40e014ebe4e7fdee7 (patch) | |
tree | 67a45372bd87b7d0020e6c5fdcbf034dc417ad8f /Lib/idlelib/idle_test | |
parent | 87bd2071c756188b6cd577889fb1682831142ceb (diff) | |
download | cpython-git-2cd902585815582eb059e3b40e014ebe4e7fdee7.tar.gz |
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.
Diffstat (limited to 'Lib/idlelib/idle_test')
-rw-r--r-- | Lib/idlelib/idle_test/test_multicall.py | 8 | ||||
-rw-r--r-- | Lib/idlelib/idle_test/test_tree.py | 29 |
2 files changed, 36 insertions, 1 deletions
diff --git a/Lib/idlelib/idle_test/test_multicall.py b/Lib/idlelib/idle_test/test_multicall.py index 68156a743d..ba582bb3ca 100644 --- a/Lib/idlelib/idle_test/test_multicall.py +++ b/Lib/idlelib/idle_test/test_multicall.py @@ -35,6 +35,14 @@ class MultiCallTest(unittest.TestCase): mctext = self.mc(self.root) self.assertIsInstance(mctext._MultiCall__binders, list) + def test_yview(self): + # Added for tree.wheel_event + # (it depends on yview to not be overriden) + mc = self.mc + self.assertIs(mc.yview, Text.yview) + mctext = self.mc(self.root) + self.assertIs(mctext.yview.__func__, Text.yview) + if __name__ == '__main__': unittest.main(verbosity=2) diff --git a/Lib/idlelib/idle_test/test_tree.py b/Lib/idlelib/idle_test/test_tree.py index 9be9abee36..b3e4c10cf9 100644 --- a/Lib/idlelib/idle_test/test_tree.py +++ b/Lib/idlelib/idle_test/test_tree.py @@ -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) |