Put the new windows in the upper left corner of the screen but not at (0, 0)
as before, this was rather inconvenient and too different from the normal
application behaviour under OS X.
Closes #11926.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@66034
c3d73ce0-8a6f-49c7-b76d-
6d57e0e08775
m_isShown = false;
// use the appropriate defaults for the position and size if necessary
m_isShown = false;
// use the appropriate defaults for the position and size if necessary
- wxPoint pos(posOrig);
- if ( !pos.IsFullySpecified() )
- pos.SetDefaults(wxGetClientDisplayRect().GetPosition());
-
wxSize size(sizeOrig);
if ( !size.IsFullySpecified() )
size.SetDefaults(wxTopLevelWindow::GetDefaultSize());
wxSize size(sizeOrig);
if ( !size.IsFullySpecified() )
size.SetDefaults(wxTopLevelWindow::GetDefaultSize());
+ wxPoint pos(posOrig);
+ if ( !pos.IsFullySpecified() )
+ {
+ wxRect rectWin = wxRect(size).CentreIn(wxGetClientDisplayRect());
+
+ // The size of the window is often not really known yet, TLWs are often
+ // created with some small initial size and later are fitted to contain
+ // their children so centering the window will show it too much to the
+ // right and bottom, adjust for it by putting it more to the left and
+ // center.
+ rectWin.x /= 2;
+ rectWin.y /= 2;
+
+ pos.SetDefaults(rectWin.GetPosition());
+ }
+
// create frame.
m_nowpeer = wxNonOwnedWindowImpl::CreateNonOwnedWindow
(
// create frame.
m_nowpeer = wxNonOwnedWindowImpl::CreateNonOwnedWindow
(