gitk: Fix various bugs in the view support
- don't re-read refs when switching views, it's too slow; just do it if the user did File->Update - make the view menu use the uifont - if we have a graph line selected, unselect it before changing the view - if a row is selected and appears in the new view, but we have to read in the new view, select that row when we come across it - if no row was previously selected, or if we don't find the previously selected row in the new view, select the first row Signed-off-by: Paul Mackerras <paulus@samba.org>
This commit is contained in:
parent
f916ee427f
commit
fdedbcfb0d
20
gitk
20
gitk
@ -223,6 +223,7 @@ proc updatecommits {} {
|
|||||||
set curview -1
|
set curview -1
|
||||||
catch {unset viewdata($n)}
|
catch {unset viewdata($n)}
|
||||||
parse_args $revtreeargs
|
parse_args $revtreeargs
|
||||||
|
readrefs
|
||||||
showview $n
|
showview $n
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -351,7 +352,8 @@ proc error_popup msg {
|
|||||||
}
|
}
|
||||||
|
|
||||||
proc makewindow {} {
|
proc makewindow {} {
|
||||||
global canv canv2 canv3 linespc charspc ctext cflist textfont mainfont uifont
|
global canv canv2 canv3 linespc charspc ctext cflist
|
||||||
|
global textfont mainfont uifont
|
||||||
global findtype findtypemenu findloc findstring fstring geometry
|
global findtype findtypemenu findloc findstring fstring geometry
|
||||||
global entries sha1entry sha1string sha1but
|
global entries sha1entry sha1string sha1but
|
||||||
global maincursor textcursor curtextcursor
|
global maincursor textcursor curtextcursor
|
||||||
@ -369,7 +371,7 @@ proc makewindow {} {
|
|||||||
.bar add cascade -label "Edit" -menu .bar.edit
|
.bar add cascade -label "Edit" -menu .bar.edit
|
||||||
.bar.edit add command -label "Preferences" -command doprefs
|
.bar.edit add command -label "Preferences" -command doprefs
|
||||||
.bar.edit configure -font $uifont
|
.bar.edit configure -font $uifont
|
||||||
menu .bar.view
|
menu .bar.view -font $uifont
|
||||||
.bar add cascade -label "View" -menu .bar.view
|
.bar add cascade -label "View" -menu .bar.view
|
||||||
.bar.view add command -label "New view..." -command newview
|
.bar.view add command -label "New view..." -command newview
|
||||||
.bar.view add command -label "Delete view" -command delview -state disabled
|
.bar.view add command -label "Delete view" -command delview -state disabled
|
||||||
@ -907,6 +909,7 @@ proc showview {n} {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
unselectline
|
unselectline
|
||||||
|
normalline
|
||||||
stopfindproc
|
stopfindproc
|
||||||
if {$curview >= 0 && $phase eq {} && ![info exists viewdata($curview)]} {
|
if {$curview >= 0 && $phase eq {} && ![info exists viewdata($curview)]} {
|
||||||
set viewdata($curview) \
|
set viewdata($curview) \
|
||||||
@ -916,7 +919,6 @@ proc showview {n} {
|
|||||||
catch {unset matchinglines}
|
catch {unset matchinglines}
|
||||||
catch {unset treediffs}
|
catch {unset treediffs}
|
||||||
clear_display
|
clear_display
|
||||||
readrefs
|
|
||||||
|
|
||||||
set curview $n
|
set curview $n
|
||||||
.bar.view entryconf 2 -state [expr {$n == 0? "disabled": "normal"}]
|
.bar.view entryconf 2 -state [expr {$n == 0? "disabled": "normal"}]
|
||||||
@ -1159,7 +1161,7 @@ proc layoutmore {} {
|
|||||||
}
|
}
|
||||||
|
|
||||||
proc showstuff {canshow} {
|
proc showstuff {canshow} {
|
||||||
global numcommits commitrow pending_select
|
global numcommits commitrow pending_select selectedline
|
||||||
global linesegends idrowranges idrangedrawn
|
global linesegends idrowranges idrangedrawn
|
||||||
|
|
||||||
if {$numcommits == 0} {
|
if {$numcommits == 0} {
|
||||||
@ -1201,6 +1203,9 @@ proc showstuff {canshow} {
|
|||||||
$commitrow($pending_select) < $numcommits} {
|
$commitrow($pending_select) < $numcommits} {
|
||||||
selectline $commitrow($pending_select) 1
|
selectline $commitrow($pending_select) 1
|
||||||
}
|
}
|
||||||
|
if {![info exists selectedline] && ![info exists pending_select]} {
|
||||||
|
selectline 0 1
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
proc layoutrows {row endrow last} {
|
proc layoutrows {row endrow last} {
|
||||||
@ -1989,7 +1994,7 @@ proc xcoord {i level ln} {
|
|||||||
proc finishcommits {} {
|
proc finishcommits {} {
|
||||||
global commitidx phase
|
global commitidx phase
|
||||||
global canv mainfont ctext maincursor textcursor
|
global canv mainfont ctext maincursor textcursor
|
||||||
global findinprogress
|
global findinprogress pending_select
|
||||||
|
|
||||||
if {$commitidx > 0} {
|
if {$commitidx > 0} {
|
||||||
drawrest
|
drawrest
|
||||||
@ -2003,6 +2008,7 @@ proc finishcommits {} {
|
|||||||
settextcursor $textcursor
|
settextcursor $textcursor
|
||||||
}
|
}
|
||||||
set phase {}
|
set phase {}
|
||||||
|
catch {unset pending_select}
|
||||||
}
|
}
|
||||||
|
|
||||||
# Don't change the text pane cursor if it is currently the hand cursor,
|
# Don't change the text pane cursor if it is currently the hand cursor,
|
||||||
@ -2021,12 +2027,16 @@ proc drawrest {} {
|
|||||||
global startmsecs
|
global startmsecs
|
||||||
global canvy0 numcommits linespc
|
global canvy0 numcommits linespc
|
||||||
global rowlaidout commitidx
|
global rowlaidout commitidx
|
||||||
|
global pending_select
|
||||||
|
|
||||||
set row $rowlaidout
|
set row $rowlaidout
|
||||||
layoutrows $rowlaidout $commitidx 1
|
layoutrows $rowlaidout $commitidx 1
|
||||||
layouttail
|
layouttail
|
||||||
optimize_rows $row 0 $commitidx
|
optimize_rows $row 0 $commitidx
|
||||||
showstuff $commitidx
|
showstuff $commitidx
|
||||||
|
if {[info exists pending_select]} {
|
||||||
|
selectline 0 1
|
||||||
|
}
|
||||||
|
|
||||||
set drawmsecs [expr {[clock clicks -milliseconds] - $startmsecs}]
|
set drawmsecs [expr {[clock clicks -milliseconds] - $startmsecs}]
|
||||||
#puts "overall $drawmsecs ms for $numcommits commits"
|
#puts "overall $drawmsecs ms for $numcommits commits"
|
||||||
|
Loading…
Reference in New Issue
Block a user