From f5880d1b1a8fd268e660318e30f001af85a43148 Mon Sep 17 00:00:00 2001 From: Arda Aydin Date: Tue, 6 Oct 2026 22:02:38 +0300 Subject: [PATCH] Wiresheet: mouse wheel scrolls the sheet, Shift + wheel scrolls sideways Co-Authored-By: Claude Opus 5.5 --- app_state.py | 2 +- main.py | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/app_state.py b/app_state.py index 352bc9f..150851b 100644 --- a/app_state.py +++ b/app_state.py @@ -8,7 +8,7 @@ so later rebinding would only ever be seen by the module that did it. import configparser import os -VERSION = "0.0.0.157" +VERSION = "0.0.0.158" PROPERTIES_FILE = os.path.join(os.path.dirname(os.path.abspath(__file__)), "editor.properties") DEFAULT_GRID_SIZE = 10 DEFAULT_ADD_TIMESTAMP = True diff --git a/main.py b/main.py index f224b3b..b74a411 100644 --- a/main.py +++ b/main.py @@ -903,6 +903,18 @@ def on_canvas_wheel_zoom(event): return "break" +def on_canvas_wheel_scroll(event): + """Plain wheel pans the sheet up and down, Shift + wheel pans it sideways.""" + if not event.delta: + return "break" + units = -1 if event.delta > 0 else 1 + if event.state & 0x0001: + canvas.xview_scroll(units, "units") + else: + canvas.yview_scroll(units, "units") + return "break" + + # --- Event handlers --- def on_tree_select(event): @@ -3364,6 +3376,12 @@ canvas.bind("", on_canvas_double_click) canvas.bind("", on_canvas_wheel_zoom) canvas.bind("", do_zoom_in) canvas.bind("", do_zoom_out) +canvas.bind("", on_canvas_wheel_scroll) +canvas.bind("", on_canvas_wheel_scroll) +canvas.bind("", lambda e: canvas.yview_scroll(-1, "units")) +canvas.bind("", lambda e: canvas.yview_scroll(1, "units")) +canvas.bind("", lambda e: canvas.xview_scroll(-1, "units")) +canvas.bind("", lambda e: canvas.xview_scroll(1, "units")) paned_window.add(frame_editor, weight=3)