field w_path ; # label showing the current file path
field w_line ; # text column: all line numbers
field w_cgrp ; # text column: abbreviated commit SHA-1s
-field w_load ; # text column: loaded indicator
field w_file ; # text column: actual file data
field w_cmit ; # pane showing commit message
field status ; # text variable bound to status bar
-anchor w \
-justify left
set w_back $w.header.commit_b
- button $w_back \
- -command [cb _history_menu] \
+ label $w_back \
-image ::blame::img_back_arrow \
-borderwidth 0 \
-relief flat \
-state disabled \
-background orange \
-activebackground orange
+ bind $w_back <Button-1> "
+ if {\[$w_back cget -state\] eq {normal}} {
+ [cb _history_menu]
+ }
+ "
label $w.header.commit \
-textvariable @commit \
-background orange \
-height 25 \
-width 100
- set w_load $w.file_pane.out.loaded_t
- text $w_load \
- -background white -borderwidth 0 \
- -state disabled \
- -wrap none \
- -height 40 \
- -width 1 \
- -font font_diff
- $w_load tag conf annotated -background grey
-
set w_line $w.file_pane.out.linenumber_t
text $w_line \
-background white -borderwidth 0 \
scrollbar $w.file_pane.out.sby \
-orient v \
-command [list scrollbar2many [list \
- $w_load \
$w_line \
$w_cgrp \
$w_file \
grid \
$w_cgrp \
$w_line \
- $w_load \
$w_file \
$w.file_pane.out.sby \
-sticky nsew
- grid conf $w.file_pane.out.sbx -column 3 -sticky we
- grid columnconfigure $w.file_pane.out 3 -weight 1
+ grid conf $w.file_pane.out.sbx -column 2 -sticky we
+ grid columnconfigure $w.file_pane.out 2 -weight 1
grid rowconfigure $w.file_pane.out 0 -weight 1
set w_cmit $w.file_pane.cm.t
foreach i [list \
$w_cgrp \
- $w_load \
$w_line \
$w_file] {
$i conf -cursor $cursor_ptr
$i conf -yscrollcommand \
[list many2scrollbar [list \
$w_cgrp \
- $w_load \
$w_line \
$w_file \
] yview $w.file_pane.out.sby]
foreach i [list \
$w_cgrp \
- $w_load \
$w_line \
$w_file \
$w_cmit] {
array unset line_commit
array unset line_file
- $w_load conf -state normal
$w_cgrp conf -state normal
$w_line conf -state normal
$w_file conf -state normal
- $w_load delete 0.0 end
$w_cgrp delete 0.0 end
$w_line delete 0.0 end
$w_file delete 0.0 end
- $w_load conf -state disabled
$w_cgrp conf -state disabled
$w_line conf -state disabled
$w_file conf -state disabled
}
if {![catch {set summary $header($c,summary)}]} {
append t " $summary"
+ if {[string length $t] > 70} {
+ set t [string range $t 0 66]...
+ }
}
$m add command -label $t -command [cb _goback $i $c $f]
return
}
- $w_load conf -state normal
$w_cgrp conf -state normal
$w_line conf -state normal
$w_file conf -state normal
incr total_lines
if {$total_lines > 1} {
- $w_load insert end "\n"
$w_cgrp insert end "\n"
$w_line insert end "\n"
$w_file insert end "\n"
$w_line insert end "$total_lines" linenumber
$w_file insert end "$line"
}
- $w_load conf -state disabled
$w_cgrp conf -state disabled
$w_line conf -state disabled
$w_file conf -state disabled
set first_lno $lno
while {
- ![catch {set ncmit $line_commit([expr {$first_lno - 1}])}]
+ ![catch {set ncmit $line_commit([expr {$first_lno - 1}])}]
+ && ![catch {set nfile $line_file([expr {$first_lno - 1}])}]
&& $ncmit eq $cmit
+ && $nfile eq $file
} {
incr first_lno -1
}
while {$n > 0} {
set lno_e "$lno.0 lineend + 1c"
- if {[catch {set g g$line_commit($lno)}]} {
- $w_load tag add annotated $lno.0 $lno_e
- } else {
+ if {![catch {set g g$line_commit($lno)}]} {
$w_cgrp tag remove g$g $lno.0 $lno_e
$w_line tag remove g$g $lno.0 $lno_e
$w_file tag remove g$g $lno.0 $lno_e
incr blame_lines
}
- while {![catch {set ncmit $line_commit($lno)}]
- && $ncmit eq $cmit} {
+ while {
+ ![catch {set ncmit $line_commit($lno)}]
+ && ![catch {set nfile $line_file($lno)}]
+ && $ncmit eq $cmit
+ && $nfile eq $file
+ } {
$w_cgrp delete $lno.0 "$lno.0 lineend"
if {$lno == $first_lno} {
$author_name $author_email $author_time
$summary"
+ set file $line_file($lno)
+ if {$file ne $path} {
+ append tooltip_text "
+
+Original File: $file"
+ }
+
if {$tooltip_wm ne "$cur_w.tooltip"} {
_hide_tooltip $this