gitk: Highlight paths of interest in tree view as well

With this, when the file list window is in tree view mode, we highlight
the paths of interest.

Signed-off-by: Paul Mackerras <paulus@samba.org>
This commit is contained in:
Paul Mackerras 2006-05-20 22:56:27 +10:00
Родитель 63b7919121
Коммит 45a9d5054d
1 изменённых файлов: 38 добавлений и 26 удалений

46
gitk
Просмотреть файл

@ -950,7 +950,7 @@ proc treeview {w l openlevs} {
$w insert end $str $w insert end $str
$w image create end -align center -image $bm -padx 1 \ $w image create end -align center -image $bm -padx 1 \
-name a:$ix -name a:$ix
$w insert end $d $w insert end $d [highlight_tag $prefix]
$w mark set s:$ix "end -1c" $w mark set s:$ix "end -1c"
$w mark gravity s:$ix left $w mark gravity s:$ix left
} }
@ -962,7 +962,7 @@ proc treeview {w l openlevs} {
set str "\n" set str "\n"
for {set i 0} {$i < $lev} {incr i} {append str "\t"} for {set i 0} {$i < $lev} {incr i} {append str "\t"}
$w insert end $str $w insert end $str
$w insert end $tail $w insert end $tail [highlight_tag $f]
} }
lappend treecontents($prefix) $tail lappend treecontents($prefix) $tail
} }
@ -999,6 +999,22 @@ proc linetoelt {l} {
} }
} }
proc highlight_tree {y prefix} {
global treeheight treecontents cflist
foreach e $treecontents($prefix) {
set path $prefix$e
if {[highlight_tag $path] ne {}} {
$cflist tag add bold $y.0 "$y.0 lineend"
}
incr y
if {[string index $e end] eq "/" && $treeheight($path) > 1} {
set y [highlight_tree $y $path]
}
}
return $y
}
proc treeclosedir {w dir} { proc treeclosedir {w dir} {
global treediropen treeheight treeparent treeindex global treediropen treeheight treeparent treeindex
@ -1032,8 +1048,8 @@ proc treeopendir {w dir} {
incr treeheight($x) $n incr treeheight($x) $n
} }
foreach e $treecontents($dir) { foreach e $treecontents($dir) {
if {[string index $e end] eq "/"} {
set de $dir$e set de $dir$e
if {[string index $e end] eq "/"} {
set iy $treeindex($de) set iy $treeindex($de)
$w mark set d:$iy e:$ix $w mark set d:$iy e:$ix
$w mark gravity d:$iy left $w mark gravity d:$iy left
@ -1041,13 +1057,13 @@ proc treeopendir {w dir} {
set treediropen($de) 0 set treediropen($de) 0
$w image create e:$ix -align center -image tri-rt -padx 1 \ $w image create e:$ix -align center -image tri-rt -padx 1 \
-name a:$iy -name a:$iy
$w insert e:$ix $e $w insert e:$ix $e [highlight_tag $de]
$w mark set s:$iy e:$ix $w mark set s:$iy e:$ix
$w mark gravity s:$iy left $w mark gravity s:$iy left
set treeheight($de) 1 set treeheight($de) 1
} else { } else {
$w insert e:$ix $str $w insert e:$ix $str
$w insert e:$ix $e $w insert e:$ix $e [highlight_tag $de]
} }
} }
$w mark gravity e:$ix left $w mark gravity e:$ix left
@ -1155,11 +1171,10 @@ proc highlight_tag {f} {
} }
proc highlight_filelist {} { proc highlight_filelist {} {
global flistmode cflist global cmitmode cflist
global highlight_paths
if {$flistmode eq "flat"} {
$cflist conf -state normal $cflist conf -state normal
if {$cmitmode ne "tree"} {
set end [lindex [split [$cflist index end] .] 0] set end [lindex [split [$cflist index end] .] 0]
for {set l 2} {$l < $end} {incr l} { for {set l 2} {$l < $end} {incr l} {
set line [$cflist get $l.0 "$l.0 lineend"] set line [$cflist get $l.0 "$l.0 lineend"]
@ -1167,24 +1182,23 @@ proc highlight_filelist {} {
$cflist tag add bold $l.0 "$l.0 lineend" $cflist tag add bold $l.0 "$l.0 lineend"
} }
} }
$cflist conf -state disabled } else {
highlight_tree 2 {}
} }
$cflist conf -state disabled
} }
proc unhighlight_filelist {} { proc unhighlight_filelist {} {
global flistmode cflist global cflist
if {$flistmode eq "flat"} {
$cflist conf -state normal $cflist conf -state normal
$cflist tag remove bold 1.0 end $cflist tag remove bold 1.0 end
$cflist conf -state disabled $cflist conf -state disabled
} }
}
proc add_flist {fl} { proc add_flist {fl} {
global flistmode cflist global cflist
if {$flistmode eq "flat"} {
$cflist conf -state normal $cflist conf -state normal
foreach f $fl { foreach f $fl {
$cflist insert end "\n" $cflist insert end "\n"
@ -1192,10 +1206,9 @@ proc add_flist {fl} {
} }
$cflist conf -state disabled $cflist conf -state disabled
} }
}
proc sel_flist {w x y} { proc sel_flist {w x y} {
global flistmode ctext difffilestart cflist cflist_top cmitmode global ctext difffilestart cflist cflist_top cmitmode
if {$cmitmode eq "tree"} return if {$cmitmode eq "tree"} return
if {![info exists cflist_top]} return if {![info exists cflist_top]} return
@ -5180,7 +5193,6 @@ set fastdate 0
set uparrowlen 7 set uparrowlen 7
set downarrowlen 7 set downarrowlen 7
set mingaplen 30 set mingaplen 30
set flistmode "flat"
set cmitmode "patch" set cmitmode "patch"
set colors {green red blue magenta darkgrey brown orange} set colors {green red blue magenta darkgrey brown orange}