From: Michael Haggerty <mhagger@alum.mit.edu>
To: Paul Mackerras <paulus@samba.org>
Cc: git@vger.kernel.org, Michael Haggerty <mhagger@alum.mit.edu>
Subject: [PATCH 02/13] gitk: keep track of tag types in a separate `types` array
Date: Mon, 19 Dec 2016 17:45:01 +0100 [thread overview]
Message-ID: <e9d546743245a59925fa0ab762a8a1e88ccfc360.1482164633.git.mhagger@alum.mit.edu> (raw)
In-Reply-To: <cover.1482164633.git.mhagger@alum.mit.edu>
The resulting code is easier to follow than the old counting-based code,
plus in a moment we will add some more specific types.
Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
---
gitk | 37 +++++++++++++++++++++----------------
1 file changed, 21 insertions(+), 16 deletions(-)
diff --git a/gitk b/gitk
index 296efb3..7c830c3 100755
--- a/gitk
+++ b/gitk
@@ -6560,8 +6560,7 @@ proc drawtags {id x xt y1} {
global reflinecolor
set marks {}
- set ntags 0
- set nheads 0
+ set types {}
set singletag 0
set maxtags 3
set maxtagpct 25
@@ -6576,22 +6575,30 @@ proc drawtags {id x xt y1} {
[totalwidth $tags mainfont $extra] > $maxwidth} {
# show just a single "n tags..." tag
set singletag 1
+ lappend types tag
if {$ntags == 1} {
lappend marks "tag..."
} else {
lappend marks [format "%d tags..." $ntags]
- set ntags 1
}
} else {
- set marks [concat $marks $tags]
+ foreach tag $tags {
+ lappend types tag
+ lappend marks $tag
+ }
}
}
if {[info exists idheads($id)]} {
- set marks [concat $marks $idheads($id)]
- set nheads [llength $idheads($id)]
+ foreach head $idheads($id) {
+ lappend types head
+ lappend marks $head
+ }
}
if {[info exists idotherrefs($id)]} {
- set marks [concat $marks $idotherrefs($id)]
+ foreach other $idotherrefs($id) {
+ lappend types other
+ lappend marks $other
+ }
}
if {$marks eq {}} {
return $xt
@@ -6601,10 +6608,8 @@ proc drawtags {id x xt y1} {
set yb [expr {$yt + $linespc - 1}]
set xvals {}
set wvals {}
- set i -1
- foreach tag $marks {
- incr i
- if {$i >= $ntags && $i < $ntags + $nheads && $tag eq $mainhead} {
+ foreach tag $marks type $types {
+ if {$type eq "head" && $tag eq $mainhead} {
set wid [font measure mainfontbold $tag]
} else {
set wid [font measure mainfont $tag]
@@ -6616,12 +6621,12 @@ proc drawtags {id x xt y1} {
set t [$canv create line $x $y1 [lindex $xvals end] $y1 \
-width $lthickness -fill $reflinecolor -tags tag.$id]
$canv lower $t
- foreach tag $marks x $xvals wid $wvals {
+ foreach tag $marks type $types x $xvals wid $wvals {
set tag_quoted [string map {% %%} $tag]
set xl [expr {$x + $delta}]
set xr [expr {$x + $delta + $wid + $lthickness}]
set font mainfont
- if {[incr ntags -1] >= 0} {
+ if {$type eq "tag"} {
# draw a tag
set t [$canv create polygon $x [expr {$yt + $delta}] $xl $yt \
$xr $yt $xr $yb $xl $yb $x [expr {$yb - $delta}] \
@@ -6636,7 +6641,7 @@ proc drawtags {id x xt y1} {
set rowtextx([rowofcommit $id]) [expr {$xr + $linespc}]
} else {
# draw a head or other ref
- if {[incr nheads -1] >= 0} {
+ if {$type eq "head"} {
set col $headbgcolor
if {$tag eq $mainhead} {
set font mainfontbold
@@ -6658,9 +6663,9 @@ proc drawtags {id x xt y1} {
}
set t [$canv create text $xl $y1 -anchor w -text $tag -fill $headfgcolor \
-font $font -tags [list tag.$id text]]
- if {$ntags >= 0} {
+ if {$type eq "tag"} {
$canv bind $t <1> $tagclick
- } elseif {$nheads >= 0} {
+ } elseif {$type eq "head"} {
$canv bind $t $ctxbut [list headmenu %X %Y $id $tag_quoted]
}
}
--
2.9.3
next prev parent reply other threads:[~2016-12-19 16:47 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-12-19 16:44 [PATCH 00/13] gitk: tweak rendering of remote-tracking references Michael Haggerty
2016-12-19 16:45 ` [PATCH 01/13] gitk: when processing tag labels, don't use `marks` as scratch space Michael Haggerty
2016-12-19 16:45 ` Michael Haggerty [this message]
2016-12-19 16:45 ` [PATCH 03/13] gitk: use a type "tags" to indicate abbreviated tags Michael Haggerty
2016-12-19 16:45 ` [PATCH 04/13] gitk: use a type "mainhead" to indicate the main HEAD branch Michael Haggerty
2016-12-19 16:45 ` [PATCH 05/13] gitk: fill in `wvals` as the tags are first processed Michael Haggerty
2016-12-19 16:45 ` [PATCH 06/13] gitk: simplify regexp Michael Haggerty
2016-12-19 16:45 ` [PATCH 07/13] gitk: extract a method `remotereftext` Michael Haggerty
2016-12-19 16:45 ` [PATCH 08/13] gitk: only change the color of the "remote" part of remote refs Michael Haggerty
2016-12-19 16:45 ` [PATCH 09/13] gitk: shorten labels displayed for modern remote-tracking refs Michael Haggerty
2016-12-19 16:45 ` [PATCH 10/13] gitk: use type "remote" for remote-tracking references Michael Haggerty
2016-12-19 16:45 ` [PATCH 11/13] gitk: introduce a constant otherrefbgcolor Michael Haggerty
2016-12-19 16:45 ` [PATCH 12/13] gitk: add a configuration setting `remoterefbgcolor` Michael Haggerty
2016-12-19 16:45 ` [PATCH 13/13] gitk: change the default colors for remote-tracking references Michael Haggerty
2016-12-19 22:53 ` [PATCH 00/13] gitk: tweak rendering of " Philip Oakley
2016-12-20 8:03 ` Michael Haggerty
2016-12-20 15:01 ` Marc Branchaud
2016-12-20 22:17 ` Paul Mackerras
2016-12-20 22:53 ` Marc Branchaud
2016-12-21 0:05 ` Michael Haggerty
2016-12-21 19:07 ` Marc Branchaud
2016-12-22 8:15 ` Michael Haggerty
2017-01-09 22:03 ` Marc Branchaud
2017-02-06 17:13 ` Marc Branchaud
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: http://vger.kernel.org/majordomo-info.html
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=e9d546743245a59925fa0ab762a8a1e88ccfc360.1482164633.git.mhagger@alum.mit.edu \
--to=mhagger@alum.mit.edu \
--cc=git@vger.kernel.org \
--cc=paulus@samba.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://80x24.org/mirrors/git.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).