gitk: set config dialog color swatches in one place
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>
Mark Levedahl committed
Jun 5, 2025 at 12:23 UTC
100f597b8833c55bdac70e9c2066d9ee36e0b6cb
1 file changed
+28
-12
gitk
+28
-12
@@ -11660,57 +11660,73 @@ proc prefspage_colors {notebook} {
11660
grid $page.cdisp - -sticky w -pady 10
11661
label $page.ui -padx 40 -relief sunk -background $uicolor
11662
ttk::button $page.uibut -text [mc "Interface"] \
11663
- -command [list choosecolor uicolor {} $page.ui [mc "interface"] setui]
11663
+ -command [list choosecolor uicolor {} $page [mc "interface"] setui]
11664
grid x $page.uibut $page.ui -sticky w
11665
label $page.bg -padx 40 -relief sunk -background $bgcolor
11666
ttk::button $page.bgbut -text [mc "Background"] \
11667
- -command [list choosecolor bgcolor {} $page.bg [mc "background"] setbg]
11667
+ -command [list choosecolor bgcolor {} $page [mc "background"] setbg]
11668
grid x $page.bgbut $page.bg -sticky w
11669
label $page.fg -padx 40 -relief sunk -background $fgcolor
11670
ttk::button $page.fgbut -text [mc "Foreground"] \
11671
- -command [list choosecolor fgcolor {} $page.fg [mc "foreground"] setfg]
11671
+ -command [list choosecolor fgcolor {} $page [mc "foreground"] setfg]
11672
grid x $page.fgbut $page.fg -sticky w
11673
label $page.diffold -padx 40 -relief sunk -background [lindex $diffcolors 0]
11674
ttk::button $page.diffoldbut -text [mc "Diff: old lines"] \
11675
- -command [list choosecolor diffcolors 0 $page.diffold [mc "diff old lines"] \
11675
+ -command [list choosecolor diffcolors 0 $page [mc "diff old lines"] \
11676
[list $ctext tag conf d0 -foreground]]
11677
grid x $page.diffoldbut $page.diffold -sticky w
11678
label $page.diffoldbg -padx 40 -relief sunk -background [lindex $diffbgcolors 0]
11679
ttk::button $page.diffoldbgbut -text [mc "Diff: old lines bg"] \
11680
- -command [list choosecolor diffbgcolors 0 $page.diffoldbg \
11680
+ -command [list choosecolor diffbgcolors 0 $page \
11681
[mc "diff old lines bg"] \
11682
[list $ctext tag conf d0 -background]]
11683
grid x $page.diffoldbgbut $page.diffoldbg -sticky w
11684
label $page.diffnew -padx 40 -relief sunk -background [lindex $diffcolors 1]
11685
ttk::button $page.diffnewbut -text [mc "Diff: new lines"] \
11686
- -command [list choosecolor diffcolors 1 $page.diffnew [mc "diff new lines"] \
11686
+ -command [list choosecolor diffcolors 1 $page [mc "diff new lines"] \
11687
[list $ctext tag conf dresult -foreground]]
11688
grid x $page.diffnewbut $page.diffnew -sticky w
11689
label $page.diffnewbg -padx 40 -relief sunk -background [lindex $diffbgcolors 1]
11690
ttk::button $page.diffnewbgbut -text [mc "Diff: new lines bg"] \
11691
- -command [list choosecolor diffbgcolors 1 $page.diffnewbg \
11691
+ -command [list choosecolor diffbgcolors 1 $page \
11692
[mc "diff new lines bg"] \
11693
[list $ctext tag conf dresult -background]]
11694
grid x $page.diffnewbgbut $page.diffnewbg -sticky w
11695
label $page.hunksep -padx 40 -relief sunk -background [lindex $diffcolors 2]
11696
ttk::button $page.hunksepbut -text [mc "Diff: hunk header"] \
11697
- -command [list choosecolor diffcolors 2 $page.hunksep \
11697
+ -command [list choosecolor diffcolors 2 $page \
11698
[mc "diff hunk header"] \
11699
[list $ctext tag conf hunksep -foreground]]
11700
grid x $page.hunksepbut $page.hunksep -sticky w
11701
label $page.markbgsep -padx 40 -relief sunk -background $markbgcolor
11702
ttk::button $page.markbgbut -text [mc "Marked line bg"] \
11703
- -command [list choosecolor markbgcolor {} $page.markbgsep \
11703
+ -command [list choosecolor markbgcolor {} $page \
11704
[mc "marked line background"] \
11705
[list $ctext tag conf omark -background]]
11706
grid x $page.markbgbut $page.markbgsep -sticky w
11707
label $page.selbgsep -padx 40 -relief sunk -background $selectbgcolor
11708
ttk::button $page.selbgbut -text [mc "Select bg"] \
11709
- -command [list choosecolor selectbgcolor {} $page.selbgsep [mc "background"] setselbg]
11709
+ -command [list choosecolor selectbgcolor {} $page [mc "background"] setselbg]
11710
grid x $page.selbgbut $page.selbgsep -sticky w
11711
return $page
11712
}
11713
11714
+proc prefspage_set_colorswatches {page} {
11715
+ global uicolor bgcolor fgcolor ctext diffcolors selectbgcolor markbgcolor
11716
+ global diffbgcolors
11717
+
11718
+ $page.ui configure -background $uicolor
11719
+ $page.bg configure -background $bgcolor
11720
+ $page.fg configure -background $fgcolor
11721
+ $page.diffold configure -background [lindex $diffcolors 0]
11722
+ $page.diffoldbg configure -background [lindex $diffbgcolors 0]
11723
+ $page.diffnew configure -background [lindex $diffcolors 1]
11724
+ $page.diffnewbg configure -background [lindex $diffbgcolors 1]
11725
+ $page.hunksep configure -background [lindex $diffcolors 2]
11726
+ $page.markbgsep configure -background $markbgcolor
11727
+ $page.selbgsep configure -background $selectbgcolor
11728
+}
11729
+
11730
proc prefspage_fonts {notebook} {
11731
set page [create_prefs_page $notebook.fonts]
11732
ttk::label $page.cfont -text [mc "Fonts: press to choose"] -font mainfontbold
@@ -11778,15 +11794,15 @@ proc choose_extdiff {} {
11794
}
11795
}
11796
11781
-proc choosecolor {v vi w x cmd} {
11797
+proc choosecolor {v vi prefspage x cmd} {
11798
global $v
11799
11800
set c [tk_chooseColor -initialcolor [lindex [set $v] $vi] \
11801
-title [mc "Gitk: choose color for %s" $x]]
11802
if {$c eq {}} return
11787
- $w conf -background $c
11803
lset $v $vi $c
11804
eval $cmd $c
11805
+ prefspage_set_colorswatches $prefspage
11806
}
11807
11808
proc setselbg {c} {