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)