diff options
author | jan.nijtmans <nijtmans@users.sourceforge.net> | 2012-04-20 12:23:56 (GMT) |
---|---|---|
committer | jan.nijtmans <nijtmans@users.sourceforge.net> | 2012-04-20 12:23:56 (GMT) |
commit | 72dea207ae279d05cfa07445b767e0efb4bb6702 (patch) | |
tree | ab880bbfe157359df231d47bd8a411c4f405cc03 | |
parent | 851c442b53473d494521a4633e8d764cb5d5e45a (diff) | |
parent | 8077dd948e9d7c758be18837a1cc637007e50084 (diff) | |
download | tk-72dea207ae279d05cfa07445b767e0efb4bb6702.zip tk-72dea207ae279d05cfa07445b767e0efb4bb6702.tar.gz tk-72dea207ae279d05cfa07445b767e0efb4bb6702.tar.bz2 |
Use vroot size in stead of screen size for clipping window coordinates in ::tk::PlaceWindow.
Use ::tk::PlaceWindow in dialog.tcl, in stead of dumplicating the code there.
-rw-r--r-- | ChangeLog | 8 | ||||
-rw-r--r-- | library/bgerror.tcl | 4 | ||||
-rw-r--r-- | library/choosedir.tcl | 2 | ||||
-rw-r--r-- | library/clrpick.tcl | 2 | ||||
-rw-r--r-- | library/dialog.tcl | 22 | ||||
-rw-r--r-- | library/msgbox.tcl | 2 | ||||
-rw-r--r-- | library/tk.tcl | 17 | ||||
-rw-r--r-- | library/tkfbox.tcl | 2 |
8 files changed, 26 insertions, 33 deletions
@@ -1,3 +1,11 @@ +2012-04-20 Jan Nijtmans <nijtmans@users.sf.net> + + * generic/tk.tcl: Use vroot size in stead of screen size for + clipping window coordinates in ::tk::PlaceWindow. + * generic/dialog.tcl: Use ::tk::PlaceWindow in dialog.tcl, in + stead of dumplicating the code there. + (harmless part of [Bug 533519]) + 2012-04-13 Jan Nijtmans <nijtmans@users.sf.net> * win/rules.vc: [Bug 3517448] TclKit build fails (unresolved diff --git a/library/bgerror.tcl b/library/bgerror.tcl index a9e7d30..0dc70cf 100644 --- a/library/bgerror.tcl +++ b/library/bgerror.tcl @@ -214,7 +214,9 @@ proc ::tk::dialog::error::bgerror err { bind $dlg <Destroy> [namespace code [list Destroy %W]] $dlg.function configure -command [namespace code Details] - # 6. Place the window (centered in the display) and deiconify it. + # 6. Withdraw the window, then update all the geometry information + # so we know how big it wants to be, then center the window in the + # display (Motif style) and de-iconify it. ::tk::PlaceWindow $dlg diff --git a/library/choosedir.tcl b/library/choosedir.tcl index 8f3f75f..00dca9d 100644 --- a/library/choosedir.tcl +++ b/library/choosedir.tcl @@ -89,7 +89,7 @@ proc ::tk::dialog::file::chooseDir:: {args} { # Withdraw the window, then update all the geometry information # so we know how big it wants to be, then center the window in the - # display and de-iconify it. + # display (Motif style) and de-iconify it. ::tk::PlaceWindow $w widget $data(-parent) wm title $w $data(-title) diff --git a/library/clrpick.tcl b/library/clrpick.tcl index 712c45d..092915c 100644 --- a/library/clrpick.tcl +++ b/library/clrpick.tcl @@ -89,7 +89,7 @@ proc ::tk::dialog::color:: {args} { # 5. Withdraw the window, then update all the geometry information # so we know how big it wants to be, then center the window in the - # display and de-iconify it. + # display (Motif style) and de-iconify it. ::tk::PlaceWindow $w widget $data(-parent) wm title $w $data(-title) diff --git a/library/dialog.tcl b/library/dialog.tcl index abe142b..26ec7e0 100644 --- a/library/dialog.tcl +++ b/library/dialog.tcl @@ -146,27 +146,9 @@ proc ::tk_dialog {w title text bitmap default args} { # 6. Withdraw the window, then update all the geometry information # so we know how big it wants to be, then center the window in the - # display and de-iconify it. - - wm withdraw $w - update idletasks - set x [expr {[winfo screenwidth $w]/2 - [winfo reqwidth $w]/2 \ - - [winfo vrootx [winfo parent $w]]}] - set y [expr {[winfo screenheight $w]/2 - [winfo reqheight $w]/2 \ - - [winfo vrooty [winfo parent $w]]}] - # Make sure that the window is on the screen and set the maximum - # size of the window is the size of the screen. That'll let things - # fail fairly gracefully when very large messages are used. [Bug 827535] - if {$x < 0} { - set x 0 - } - if {$y < 0} { - set y 0 - } - wm maxsize $w [winfo screenwidth $w] [winfo screenheight $w] - wm geometry $w +$x+$y - wm deiconify $w + # display (Motif style) and de-iconify it. + ::tk::PlaceWindow $w tkwait visibility $w # 7. Set a grab and claim the focus too. diff --git a/library/msgbox.tcl b/library/msgbox.tcl index ed1f4fe..572510a 100644 --- a/library/msgbox.tcl +++ b/library/msgbox.tcl @@ -421,7 +421,7 @@ proc ::tk::MessageBox {args} { # 7. Withdraw the window, then update all the geometry information # so we know how big it wants to be, then center the window in the - # display and de-iconify it. + # display (Motif style) and de-iconify it. ::tk::PlaceWindow $w widget $data(-parent) diff --git a/library/tk.tcl b/library/tk.tcl index 8e967cb..a852a0b 100644 --- a/library/tk.tcl +++ b/library/tk.tcl @@ -117,21 +117,22 @@ proc ::tk::PlaceWindow {w {place ""} {anchor ""}} { set checkBounds 0 } if {$checkBounds} { - if {$x < 0} { - set x 0 - } elseif {$x > ([winfo screenwidth $w]-[winfo reqwidth $w])} { - set x [expr {[winfo screenwidth $w]-[winfo reqwidth $w]}] + if {$x < [winfo vrootx $w]} { + set x [winfo vrootx $w] + } elseif {$x > ([winfo vrootx $w]+[winfo vrootwidth $w]-[winfo reqwidth $w])} { + set x [expr {[winfo vrootx $w]+[winfo vrootwidth $w]-[winfo reqwidth $w]}] } - if {$y < 0} { - set y 0 - } elseif {$y > ([winfo screenheight $w]-[winfo reqheight $w])} { - set y [expr {[winfo screenheight $w]-[winfo reqheight $w]}] + if {$y < [winfo vrooty $w]} { + set y [winfo vrooty $w] + } elseif {$y > ([winfo vrooty $w]+[winfo vrootheight $w]-[winfo reqheight $w])} { + set y [expr {[winfo vrooty $w]+[winfo vrootheight $w]-[winfo reqheight $w]}] } if {[tk windowingsystem] eq "aqua"} { # Avoid the native menu bar which sits on top of everything. if {$y < 22} { set y 22 } } } + wm maxsize $w [winfo vrootwidth $w] [winfo vrootheight $w] wm geometry $w +$x+$y wm deiconify $w } diff --git a/library/tkfbox.tcl b/library/tkfbox.tcl index 78112e1..bbea5c6 100644 --- a/library/tkfbox.tcl +++ b/library/tkfbox.tcl @@ -914,7 +914,7 @@ proc ::tk::dialog::file:: {type args} { # Withdraw the window, then update all the geometry information # so we know how big it wants to be, then center the window in the - # display and de-iconify it. + # display (Motif style) and de-iconify it. ::tk::PlaceWindow $w widget $data(-parent) wm title $w $data(-title) |