@@ -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 {} {
1016810167proc 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
1021910226proc sel_reflist {w x y} {
0 commit comments