]> git.ipfire.org Git - thirdparty/git.git/commitdiff
gitk: update aqua scrolling for TclTk 8.6 / TIP171
authorMark Levedahl <mlevedahl@gmail.com>
Tue, 3 Jun 2025 19:04:27 +0000 (15:04 -0400)
committerMark Levedahl <mlevedahl@gmail.com>
Thu, 17 Jul 2025 03:01:51 +0000 (23:01 -0400)
Tk provides MouseWheel events to aqua, similar to win32. But, these
events on aqua have a nominal motion value (%D) of 1, not 120 as on
win32. gitk on aqua provides specific bindings only for the top 3 panes,
giving a nominal scrolling amount of +/- 1 for all events. gitk includes
a hidden feature providing horizontal scrolling of the commit graph,
added in 5fdcbb1390 ("gitk: Fixes for Mac OS X TkAqua", 2009-03-23).
This horizontal scrolling is triggered by mouse events in any of the top
3 panes, and thus violates normal gui design where the object under the
mouse cursor scrolls.

Let's update this using the common bindings in 'proc bind_mousewheel',
allowing user preferences on motion scaling to apply to all windows.
The commit graph scrolling feature is removed by this, and will be added
back for all platforms in a later commit.

Signed-off-by: Mark Levedahl <mlevedahl@gmail.com>
gitk

diff --git a/gitk b/gitk
index dd36e4c1b9aee964d00f050eac0f3daf88afb57b..bd57a55466dea5bf692289a42be340448fb43981 100755 (executable)
--- a/gitk
+++ b/gitk
@@ -2735,14 +2735,8 @@ proc makewindow {} {
         set scroll_D0 1
         bind_mousewheel_buttons
     } elseif {[tk windowingsystem] == "aqua"} {
-        bindall <MouseWheel> {
-            set delta [expr {- (%D)}]
-            allcanvs yview scroll $delta units
-        }
-        bindall <Shift-MouseWheel> {
-            set delta [expr {- (%D)}]
-            $canv xview scroll $delta units
-        }
+        set scroll_D0 1
+        bind_mousewheel
     } else {
         puts stderr [mc "Unknown windowing system, cannot bind mouse"]
     }