Skip to content

Commit bd3fd7e

Browse files
committed
Merge branch 'js/persist-ref-window-geometry'
* js/persist-ref-window-geometry: gitk: persist position and size of the Tags and Heads window Revert "gitk: Only restore window size from ~/.gitk, not position"
2 parents d445a78 + bf5a55a commit bd3fd7e

1 file changed

Lines changed: 22 additions & 15 deletions

File tree

gitk

Lines changed: 22 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -2131,12 +2131,14 @@ proc ttk_toplevel {w args} {
21312131
return $w
21322132
}
21332133
2134-
proc make_transient {window origin} {
2134+
proc make_transient {window origin {geometry ""}} {
21352135
wm transient $window $origin
21362136
2137-
# Windows fails to place transient windows normally, so
2138-
# schedule a callback to center them on the parent.
2139-
if {[tk windowingsystem] eq {win32}} {
2137+
if {$geometry ne ""} {
2138+
after idle [list wm geometry $window $geometry]
2139+
} elseif {[tk windowingsystem] eq {win32}} {
2140+
# Windows fails to place transient windows normally, so
2141+
# schedule a callback to center them on the parent.
21402142
after idle [list tk::PlaceWindow $window widget $origin]
21412143
}
21422144
}
@@ -2723,17 +2725,9 @@ proc makewindow {} {
27232725
.pwbottom add .bright
27242726
.ctop add .pwbottom
27252727
2726-
# restore window width & height if known
2728+
# restore window position if known
27272729
if {[info exists geometry(main)]} {
2728-
if {[scan $geometry(main) "%dx%d" w h] >= 2} {
2729-
if {$w > [winfo screenwidth .]} {
2730-
set w [winfo screenwidth .]
2731-
}
2732-
if {$h > [winfo screenheight .]} {
2733-
set h [winfo screenheight .]
2734-
}
2735-
wm geometry . "${w}x$h"
2736-
}
2730+
wm geometry . "$geometry(main)"
27372731
}
27382732
27392733
if {[info exists geometry(state)] && $geometry(state) eq "zoomed"} {
@@ -3073,6 +3067,11 @@ proc savestuff {w} {
30733067
puts $f "set geometry(pwsash1) \"[.tf.histframe.pwclist sashpos 1] 1\""
30743068
puts $f "set geometry(botwidth) [winfo width .bleft]"
30753069
puts $f "set geometry(botheight) [winfo height .bleft]"
3070+
unset -nocomplain geometry
3071+
global geometry
3072+
if {[info exists geometry(showrefs)]} {
3073+
puts $f "set geometry(showrefs) $geometry(showrefs)"
3074+
}
30763075
30773076
array set view_save {}
30783077
array set views {}
@@ -10168,6 +10167,7 @@ proc rmbranch {} {
1016810167
proc showrefs {} {
1016910168
global showrefstop bgcolor fgcolor selectbgcolor
1017010169
global bglist fglist reflistfilter reflist maincursor
10170+
global geometry
1017110171
1017210172
set top .showrefs
1017310173
set showrefstop $top
@@ -10178,7 +10178,11 @@ proc showrefs {} {
1017810178
}
1017910179
ttk_toplevel $top
1018010180
wm title $top [mc "Tags and heads: %s" [file tail [pwd]]]
10181-
make_transient $top .
10181+
if {[info exists geometry(showrefs)]} {
10182+
make_transient $top . $geometry(showrefs)
10183+
} else {
10184+
make_transient $top .
10185+
}
1018210186
text $top.list -background $bgcolor -foreground $fgcolor \
1018310187
-selectbackground $selectbgcolor -font mainfont \
1018410188
-xscrollcommand "$top.xsb set" -yscrollcommand "$top.ysb set" \
@@ -10214,6 +10218,9 @@ proc showrefs {} {
1021410218
bind $top.list <ButtonRelease-1> {sel_reflist %W %x %y; break}
1021510219
set reflist {}
1021610220
refill_reflist
10221+
# avoid <Configure> being bound to child windows
10222+
bindtags $top [linsert [bindtags $top] 1 bind$top]
10223+
bind bind$top <Configure> {set geometry(showrefs) [wm geometry %W]}
1021710224
}
1021810225
1021910226
proc sel_reflist {w x y} {

0 commit comments

Comments
 (0)