]> git.saurik.com Git - wxWidgets.git/commitdiff
Improve default position for new TLWs in wxOSX.
authorVadim Zeitlin <vadim@wxwidgets.org>
Fri, 5 Nov 2010 21:40:30 +0000 (21:40 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Fri, 5 Nov 2010 21:40:30 +0000 (21:40 +0000)
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

src/osx/nonownedwnd_osx.cpp

index 213188d1466cbdc049b852a515845688c76249dd..5ed6cdf443f20a6dd00b680b59d0af5ac01ae9ec 100644 (file)
@@ -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
                 (