From: George Tasker Date: Fri, 11 May 2001 20:23:58 +0000 (+0000) Subject: Sizer based dialogs (like wxSingleChoiceDialog) are now forced to initially appear... X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/ef397583dfdf7ba59ecb0a72659c455f04523c97 Sizer based dialogs (like wxSingleChoiceDialog) are now forced to initially appear in the visible area of the display, relocating the dialog before display so that it fits within the display (if possible). If the dialog will not fit in the display area, it is shifted so that the top edge with the title bar is visible on the display git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@10134 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/src/common/sizer.cpp b/src/common/sizer.cpp index 049760f8c2..3915938467 100644 --- a/src/common/sizer.cpp +++ b/src/common/sizer.cpp @@ -378,9 +378,12 @@ void wxSizer::SetSizeHints( wxWindow *window ) wxSize wxSizer::GetMaxWindowSize( wxWindow *WXUNUSED(window) ) { - wxSize sizeMax = wxGetDisplaySize(); - // make the max size a bit smaller than the screen, a window which takes - // the entire screen doesn't look very nice neither + wxRect rect = wxGetClientDisplayRect(); + wxSize sizeMax (rect.width,rect.height); + + // Make the max size a bit smaller than the visible portion of + // the screen. A window which takes the entire screen doesn't + // look very nice either sizeMax.x *= 9; sizeMax.x /= 10; diff --git a/src/common/wincmn.cpp b/src/common/wincmn.cpp index 48e44b9946..95c51f5899 100644 --- a/src/common/wincmn.cpp +++ b/src/common/wincmn.cpp @@ -395,6 +395,30 @@ void wxWindowBase::Centre(int direction) xNew += posParent.x; yNew += posParent.y; + // Base size of the visible dimensions of the display + // to take into account the taskbar + wxRect rect = wxGetClientDisplayRect(); + wxSize size (rect.width,rect.height); + + if (posParent.x >= 0) // if parent is on the main display + { + if (xNew < 0) + xNew = 0; + else if (xNew+width > size.x) + xNew = size.x-width-1; + } + if (posParent.y >= 0) // if parent is on the main display + { + if (yNew+height > size.y) + yNew = size.y-height-1; + + // Make certain that the title bar is initially visible + // always, even if this would push the bottom of the + // dialog of the visible area of the display + if (yNew < 0) + yNew = 0; + } + // move the window to this position (keeping the old size but using // SetSize() and not Move() to allow xNew and/or yNew to be -1) SetSize(xNew, yNew, width, height, wxSIZE_ALLOW_MINUS_ONE);