git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH 3/3] gitk: improve dark background, select light or dark tags

From
David Fries <david@fries.net>
Date
Nov 11, 2010, 05:19 UTC
Message-ID
<1289452742-7235-3-git-send-email-david@fries.net>
In-Reply-To
<1289451597-6950-1-git-send-email-david@fries.net>

If the foreground color is dark use light tags, branches, and remote fill colors. If it is light use darker versions so the text is readable.

Signed-off-by: David Fries <David@Fries.net>
---
 gitk-git/gitk |   41 +++++++++++++++++++++++++++++++++++++----
 1 files changed, 37 insertions(+), 4 deletions(-)
diff --git a/gitk-git/gitk b/gitk-git/gitk
index bef2e53..6342a31 100644
--- a/gitk-git/gitk
+++ b/gitk-git/gitk
@@ -6233,6 +6233,7 @@ proc drawtags {id x xt y1} {
     global idtags idheads idotherrefs mainhead
     global linespc lthickness
     global canv rowtextx curview fgcolor bgcolor ctxbut
+    global tagcolor branchcolor remotecolor
 
     set marks {}
     set ntags 0
@@ -6280,29 +6281,32 @@ proc drawtags {id x xt y1} {
 	    # draw a tag
 	    set t [$canv create polygon $x [expr {$yt + $delta}] $xl $yt \
 		       $xr $yt $xr $yb $xl $yb $x [expr {$yb - $delta}] \
-		       -width 1 -outline $fgcolor -fill yellow -tags tag.$id]
+		       -width 1 -outline $fgcolor -fill $tagcolor -tags \
+		       [list tag.$id tagcolor]]
 	    $canv bind $t <1> [list showtag $tag 1]
 	    set rowtextx([rowofcommit $id]) [expr {$xr + $linespc}]
 	} else {
 	    # draw a head or other ref
 	    if {[incr nheads -1] >= 0} {
-		set col green
+		set col $branchcolor
+		set t [list tag.$id branchcolor]
 		if {$tag eq $mainhead} {
 		    set font mainfontbold
 		}
 	    } else {
 		set col "#ddddff"
+		set t tag.$id
 	    }
 	    set xl [expr {$xl - $delta/2}]
 	    $canv create polygon $x $yt $xr $yt $xr $yb $x $yb \
-		-width 1 -outline $fgcolor -fill $col -tags tag.$id
+		-width 1 -outline $fgcolor -fill $col -tags $t
 	    if {[regexp {^(remotes/.*/|remotes/)} $tag match remoteprefix]} {
 	        set rwid [font measure mainfont $remoteprefix]
 		set xi [expr {$x + 1}]
 		set yti [expr {$yt + 1}]
 		set xri [expr {$x + $rwid}]
 		$canv create polygon $xi $yti $xri $yti $xri $yb $xi $yb \
-			-width 0 -fill "#ffddaa" -tags tag.$id
+			-width 0 -fill $remotecolor -tags [list tag.$id remotecolor]
 	    }
 	}
 	set t [$canv create text $xl $y1 -anchor w -text $tag -fill $fgcolor \
@@ -10877,6 +10881,30 @@ proc setbg {c} {
     }
 }
 
+proc setfill {c} {
+    global tagcolor branchcolor remotecolor
+    global canv;
+
+    set fg [winfo rgb . $c]
+    if {[lindex $fg 0] + 1.5 * [lindex $fg 1] + 0.5 * [lindex $fg 2] > 100000} {
+	# dark fill to read a light foreground font
+	set tagcolor yellow4
+	set branchcolor green4
+	set remotecolor "#806F55"
+    } else {
+	# light fill to read a dark foreground font
+        set tagcolor yellow
+        set branchcolor green
+        set remotecolor "#ffddaa"
+    }
+    # update tags assocated with non-text elements
+    if {[info exists canv]} {
+        $canv itemconf tagcolor -fill $tagcolor
+        $canv itemconf branchcolor -fill $branchcolor
+        $canv itemconf remotecolor -fill $remotecolor
+    }
+}
+
 proc setfg {c} {
     global fglist canv
 
@@ -10887,6 +10915,10 @@ proc setfg {c} {
     $canv itemconf circle -outline $c
     $canv itemconf markid -outline $c
     $canv itemconf line -fill $c
+    $canv itemconf tagcolor -outline $c
+    $canv itemconf branchcolor -outline $c
+
+    setfill $c
 }
 
 # update hunksep and each link foreground color
@@ -11436,6 +11468,7 @@ namespace import ::msgcat::mc
 ::msgcat::mcload $gitk_msgsdir
 
 catch {source ~/.gitk}
+setfill $fgcolor
 
 parsefont mainfont $mainfont
 eval font create mainfont [fontflags mainfont]
-- 
1.7.2.3
Previous: David FriesNext: David Fries
Message 4 of 6 in “gitk: improve dark background”
  1. 0/3 gitk: improve dark backgroundDavid Fries, Nov 11, 2010
  2. 1/3 gitk: improve dark background, s/black/$fgcolor/David Fries, Nov 11, 2010
  3. 2/3 gitk: improve dark background, use diffcolor 2 for linkDavid Fries, Nov 11, 2010
  4. 3/3 gitk: improve dark background, select light or dark tagsDavid Fries, Nov 11, 2010
  5. 0/3 gitk: improve dark backgroundDavid Fries, Nov 26, 2010
  6. Junio C HamanoNov 27, 2010

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.