Make gitk save and restore window pane position on Linux and Cygwin.
Subtle bugs remained on both Cygwin and Linux that caused the various window panes to be restored in positions different than where the user last placed them. Sergey Vlasov posed a pair of suggested fixes to this, what is done here is slightly different. The basic fix here involves a) explicitly remembering and restoring the sash positions for the upper window, and b) using paneconfigure to redundantly set height and width of other elements. This redundancy is needed as Cygwin Tcl has a nasty habit of setting pane sizes to zero if their slaves are not configured with a specific size, but Linux Tcl does not honor the specific size given. Signed-off-by: Mark Levedahl <mdl123@verizon.net> Signed-off-by: Junio C Hamano <junkio@cox.net>
This commit is contained in:
parent
9236053873
commit
2055f3b578
23
gitk
23
gitk
@ -439,14 +439,13 @@ proc makewindow {} {
|
|||||||
panedwindow .ctop -orient vertical
|
panedwindow .ctop -orient vertical
|
||||||
|
|
||||||
# possibly use assumed geometry
|
# possibly use assumed geometry
|
||||||
if {![info exists geometry(topheight)]} {
|
if {![info exists geometry(pwsash0)]} {
|
||||||
set geometry(topheight) [expr {15 * $linespc}]
|
set geometry(topheight) [expr {15 * $linespc}]
|
||||||
set geometry(topwidth) [expr {80 * $charspc}]
|
set geometry(topwidth) [expr {80 * $charspc}]
|
||||||
set geometry(botheight) [expr {15 * $linespc}]
|
set geometry(botheight) [expr {15 * $linespc}]
|
||||||
set geometry(botwidth) [expr {50 * $charspc}]
|
set geometry(botwidth) [expr {50 * $charspc}]
|
||||||
set geometry(canv) [expr {40 * $charspc}]
|
set geometry(pwsash0) "[expr {40 * $charspc}] 2"
|
||||||
set geometry(canv2) [expr {20 * $charspc}]
|
set geometry(pwsash1) "[expr {60 * $charspc}] 2"
|
||||||
set geometry(canv3) [expr {20 * $charspc}]
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# the upper half will have a paned window, a scroll bar to the right, and some stuff below
|
# the upper half will have a paned window, a scroll bar to the right, and some stuff below
|
||||||
@ -457,18 +456,20 @@ proc makewindow {} {
|
|||||||
# create three canvases
|
# create three canvases
|
||||||
set cscroll .tf.histframe.csb
|
set cscroll .tf.histframe.csb
|
||||||
set canv .tf.histframe.pwclist.canv
|
set canv .tf.histframe.pwclist.canv
|
||||||
canvas $canv -width $geometry(canv) \
|
canvas $canv \
|
||||||
-background $bgcolor -bd 0 \
|
-background $bgcolor -bd 0 \
|
||||||
-yscrollincr $linespc -yscrollcommand "scrollcanv $cscroll"
|
-yscrollincr $linespc -yscrollcommand "scrollcanv $cscroll"
|
||||||
.tf.histframe.pwclist add $canv
|
.tf.histframe.pwclist add $canv
|
||||||
set canv2 .tf.histframe.pwclist.canv2
|
set canv2 .tf.histframe.pwclist.canv2
|
||||||
canvas $canv2 -width $geometry(canv2) \
|
canvas $canv2 \
|
||||||
-background $bgcolor -bd 0 -yscrollincr $linespc
|
-background $bgcolor -bd 0 -yscrollincr $linespc
|
||||||
.tf.histframe.pwclist add $canv2
|
.tf.histframe.pwclist add $canv2
|
||||||
set canv3 .tf.histframe.pwclist.canv3
|
set canv3 .tf.histframe.pwclist.canv3
|
||||||
canvas $canv3 -width $geometry(canv3) \
|
canvas $canv3 \
|
||||||
-background $bgcolor -bd 0 -yscrollincr $linespc
|
-background $bgcolor -bd 0 -yscrollincr $linespc
|
||||||
.tf.histframe.pwclist add $canv3
|
.tf.histframe.pwclist add $canv3
|
||||||
|
eval .tf.histframe.pwclist sash place 0 $geometry(pwsash0)
|
||||||
|
eval .tf.histframe.pwclist sash place 1 $geometry(pwsash1)
|
||||||
|
|
||||||
# a scroll bar to rule them
|
# a scroll bar to rule them
|
||||||
scrollbar $cscroll -command {allcanvs yview} -highlightthickness 0
|
scrollbar $cscroll -command {allcanvs yview} -highlightthickness 0
|
||||||
@ -577,6 +578,8 @@ proc makewindow {} {
|
|||||||
pack .tf.bar -in .tf -side bottom -fill x
|
pack .tf.bar -in .tf -side bottom -fill x
|
||||||
pack .tf.histframe -fill both -side top -expand 1
|
pack .tf.histframe -fill both -side top -expand 1
|
||||||
.ctop add .tf
|
.ctop add .tf
|
||||||
|
.ctop paneconfigure .tf -height $geometry(topheight)
|
||||||
|
.ctop paneconfigure .tf -width $geometry(topwidth)
|
||||||
|
|
||||||
# now build up the bottom
|
# now build up the bottom
|
||||||
panedwindow .pwbottom -orient horizontal
|
panedwindow .pwbottom -orient horizontal
|
||||||
@ -638,6 +641,7 @@ proc makewindow {} {
|
|||||||
$ctext tag conf found -back yellow
|
$ctext tag conf found -back yellow
|
||||||
|
|
||||||
.pwbottom add .bleft
|
.pwbottom add .bleft
|
||||||
|
.pwbottom paneconfigure .bleft -width $geometry(botwidth)
|
||||||
|
|
||||||
# lower right
|
# lower right
|
||||||
frame .bright
|
frame .bright
|
||||||
@ -832,9 +836,8 @@ proc savestuff {w} {
|
|||||||
puts $f "set geometry(main) [wm geometry .]"
|
puts $f "set geometry(main) [wm geometry .]"
|
||||||
puts $f "set geometry(topwidth) [winfo width .tf]"
|
puts $f "set geometry(topwidth) [winfo width .tf]"
|
||||||
puts $f "set geometry(topheight) [winfo height .tf]"
|
puts $f "set geometry(topheight) [winfo height .tf]"
|
||||||
puts $f "set geometry(canv) [winfo width $canv]"
|
puts $f "set geometry(pwsash0) \"[.tf.histframe.pwclist sash coord 0]\""
|
||||||
puts $f "set geometry(canv2) [winfo width $canv2]"
|
puts $f "set geometry(pwsash1) \"[.tf.histframe.pwclist sash coord 1]\""
|
||||||
puts $f "set geometry(canv3) [winfo width $canv3]"
|
|
||||||
puts $f "set geometry(botwidth) [winfo width .bleft]"
|
puts $f "set geometry(botwidth) [winfo width .bleft]"
|
||||||
puts $f "set geometry(botheight) [winfo height .bleft]"
|
puts $f "set geometry(botheight) [winfo height .bleft]"
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user