From: Vadim Zeitlin Date: Fri, 5 Nov 2010 21:40:30 +0000 (+0000) Subject: Improve default position for new TLWs in wxOSX. X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/0d65f8d20fee39040d05dd546a1d4a935990acd3?ds=inline Improve default position for new TLWs in wxOSX. 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 --- diff --git a/src/osx/nonownedwnd_osx.cpp b/src/osx/nonownedwnd_osx.cpp index 213188d146..5ed6cdf443 100644 --- a/src/osx/nonownedwnd_osx.cpp +++ b/src/osx/nonownedwnd_osx.cpp @@ -115,14 +115,26 @@ bool wxNonOwnedWindow::Create(wxWindow *parent, 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()); + 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 (