X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/ed1288c1d53072d6db0285d2bd5dca3d72fc8c3e..488b2c29c0cf468f96f148003b21952611325dbf:/src/common/wincmn.cpp diff --git a/src/common/wincmn.cpp b/src/common/wincmn.cpp index d1e6488437..5f9a9a9ed7 100644 --- a/src/common/wincmn.cpp +++ b/src/common/wincmn.cpp @@ -77,6 +77,10 @@ #include "wx/caret.h" #endif // wxUSE_CARET +#if wxUSE_DISPLAY + #include "wx/display.h" +#endif + #if wxUSE_SYSTEM_OPTIONS #include "wx/sysopt.h" #endif @@ -431,6 +435,21 @@ void wxWindowBase::Centre(int direction) if ( direction & wxCENTRE_ON_SCREEN ) { + //RN: If we are using wxDisplay we get + //the dimensions of the monitor the window is on, + //otherwise we get the dimensions of the primary monitor + //FIXME: wxDisplay::GetFromWindow only implemented on MSW +#if wxUSE_DISPLAY && defined(__WXMSW__) + int nDisplay = wxDisplay::GetFromWindow((wxWindow*)this); + if(nDisplay != wxNOT_FOUND) + { + wxDisplay windowDisplay(nDisplay); + wxRect displayRect = windowDisplay.GetGeometry(); + widthParent = displayRect.width; + heightParent = displayRect.height; + } + else +#endif // centre with respect to the whole screen wxDisplaySize(&widthParent, &heightParent); } @@ -471,6 +490,9 @@ void wxWindowBase::Centre(int direction) xNew += posParent.x; yNew += posParent.y; + // FIXME: This needs to get the client display rect of the display + // the window is (via wxDisplay::GetFromWindow). + // Base size of the visible dimensions of the display // to take into account the taskbar. And the Mac menu bar at top. wxRect clientrect = wxGetClientDisplayRect(); @@ -789,10 +811,17 @@ void wxWindowBase::DoSetVirtualSize( int x, int y ) wxSize wxWindowBase::DoGetVirtualSize() const { - if (m_virtualSize == wxDefaultSize) - return GetClientSize(); + if ( m_virtualSize.IsFullySpecified() ) + return m_virtualSize; + + wxSize size = GetClientSize(); + if ( m_virtualSize.x != wxDefaultCoord ) + size.x = m_virtualSize.x; + + if ( m_virtualSize.y != wxDefaultCoord ) + size.y = m_virtualSize.y; - return m_virtualSize; + return size; } // ----------------------------------------------------------------------------