]> git.ipfire.org Git - thirdparty/git.git/commitdiff
gitk: set config dialog color swatches in one place
authorMark Levedahl <mlevedahl@gmail.com>
Thu, 5 Jun 2025 16:23:37 +0000 (12:23 -0400)
committerMark Levedahl <mlevedahl@gmail.com>
Thu, 17 Jul 2025 03:01:51 +0000 (23:01 -0400)
gitk's color selection dialog uses a number of "label" widgets to show
the current value of each selectable color. This uses the -background
color property of label widgets, and this property is overwritten when
the full ui color set is refreshed. The swatch colors are set
individually using code passed into the chooser dialog, so there is no
common routine to set all after updating the global ui colors.

Let's replace this with a single routine that does set all swatches,
removing a key impediment to restoring the ui colors if the dialog is
cancelled.

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

diff --git a/gitk b/gitk
index ba112586bed7e025f55c6ae9ee4f7e2492052900..f331d9ccd549d83fff8c88d87c8830243f7bb809 100755 (executable)
--- a/gitk
+++ b/gitk
@@ -11660,57 +11660,73 @@ proc prefspage_colors {notebook} {
     grid $page.cdisp - -sticky w -pady 10
     label $page.ui -padx 40 -relief sunk -background $uicolor
     ttk::button $page.uibut -text [mc "Interface"] \
-       -command [list choosecolor uicolor {} $page.ui [mc "interface"] setui]
+       -command [list choosecolor uicolor {} $page [mc "interface"] setui]
     grid x $page.uibut $page.ui -sticky w
     label $page.bg -padx 40 -relief sunk -background $bgcolor
     ttk::button $page.bgbut -text [mc "Background"] \
-        -command [list choosecolor bgcolor {} $page.bg [mc "background"] setbg]
+        -command [list choosecolor bgcolor {} $page [mc "background"] setbg]
     grid x $page.bgbut $page.bg -sticky w
     label $page.fg -padx 40 -relief sunk -background $fgcolor
     ttk::button $page.fgbut -text [mc "Foreground"] \
-        -command [list choosecolor fgcolor {} $page.fg [mc "foreground"] setfg]
+        -command [list choosecolor fgcolor {} $page [mc "foreground"] setfg]
     grid x $page.fgbut $page.fg -sticky w
     label $page.diffold -padx 40 -relief sunk -background [lindex $diffcolors 0]
     ttk::button $page.diffoldbut -text [mc "Diff: old lines"] \
-        -command [list choosecolor diffcolors 0 $page.diffold [mc "diff old lines"] \
+        -command [list choosecolor diffcolors 0 $page [mc "diff old lines"] \
                       [list $ctext tag conf d0 -foreground]]
     grid x $page.diffoldbut $page.diffold -sticky w
     label $page.diffoldbg -padx 40 -relief sunk -background [lindex $diffbgcolors 0]
     ttk::button $page.diffoldbgbut -text [mc "Diff: old lines bg"] \
-        -command [list choosecolor diffbgcolors 0 $page.diffoldbg \
+        -command [list choosecolor diffbgcolors 0 $page \
                       [mc "diff old lines bg"] \
                       [list $ctext tag conf d0 -background]]
     grid x $page.diffoldbgbut $page.diffoldbg -sticky w
     label $page.diffnew -padx 40 -relief sunk -background [lindex $diffcolors 1]
     ttk::button $page.diffnewbut -text [mc "Diff: new lines"] \
-        -command [list choosecolor diffcolors 1 $page.diffnew [mc "diff new lines"] \
+        -command [list choosecolor diffcolors 1 $page [mc "diff new lines"] \
                       [list $ctext tag conf dresult -foreground]]
     grid x $page.diffnewbut $page.diffnew -sticky w
     label $page.diffnewbg -padx 40 -relief sunk -background [lindex $diffbgcolors 1]
     ttk::button $page.diffnewbgbut -text [mc "Diff: new lines bg"] \
-        -command [list choosecolor diffbgcolors 1 $page.diffnewbg \
+        -command [list choosecolor diffbgcolors 1 $page \
                       [mc "diff new lines bg"] \
                       [list $ctext tag conf dresult -background]]
     grid x $page.diffnewbgbut $page.diffnewbg -sticky w
     label $page.hunksep -padx 40 -relief sunk -background [lindex $diffcolors 2]
     ttk::button $page.hunksepbut -text [mc "Diff: hunk header"] \
-        -command [list choosecolor diffcolors 2 $page.hunksep \
+        -command [list choosecolor diffcolors 2 $page \
                       [mc "diff hunk header"] \
                       [list $ctext tag conf hunksep -foreground]]
     grid x $page.hunksepbut $page.hunksep -sticky w
     label $page.markbgsep -padx 40 -relief sunk -background $markbgcolor
     ttk::button $page.markbgbut -text [mc "Marked line bg"] \
-        -command [list choosecolor markbgcolor {} $page.markbgsep \
+        -command [list choosecolor markbgcolor {} $page \
                       [mc "marked line background"] \
                       [list $ctext tag conf omark -background]]
     grid x $page.markbgbut $page.markbgsep -sticky w
     label $page.selbgsep -padx 40 -relief sunk -background $selectbgcolor
     ttk::button $page.selbgbut -text [mc "Select bg"] \
-        -command [list choosecolor selectbgcolor {} $page.selbgsep [mc "background"] setselbg]
+        -command [list choosecolor selectbgcolor {} $page [mc "background"] setselbg]
     grid x $page.selbgbut $page.selbgsep -sticky w
     return $page
 }
 
+proc prefspage_set_colorswatches {page} {
+    global uicolor bgcolor fgcolor ctext diffcolors selectbgcolor markbgcolor
+    global diffbgcolors
+
+    $page.ui configure -background $uicolor
+    $page.bg configure -background $bgcolor
+    $page.fg configure -background $fgcolor
+    $page.diffold configure -background [lindex $diffcolors 0]
+    $page.diffoldbg configure -background [lindex $diffbgcolors 0]
+    $page.diffnew configure -background [lindex $diffcolors 1]
+    $page.diffnewbg configure -background [lindex $diffbgcolors 1]
+    $page.hunksep configure -background [lindex $diffcolors 2]
+    $page.markbgsep configure -background $markbgcolor
+    $page.selbgsep configure -background $selectbgcolor
+}
+
 proc prefspage_fonts {notebook} {
     set page [create_prefs_page $notebook.fonts]
     ttk::label $page.cfont -text [mc "Fonts: press to choose"] -font mainfontbold
@@ -11778,15 +11794,15 @@ proc choose_extdiff {} {
     }
 }
 
-proc choosecolor {v vi w x cmd} {
+proc choosecolor {v vi prefspage x cmd} {
     global $v
 
     set c [tk_chooseColor -initialcolor [lindex [set $v] $vi] \
                -title [mc "Gitk: choose color for %s" $x]]
     if {$c eq {}} return
-    $w conf -background $c
     lset $v $vi $c
     eval $cmd $c
+    prefspage_set_colorswatches $prefspage
 }
 
 proc setselbg {c} {