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} {