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
This commit is contained in:
parent
4e0e692f03
commit
ef397583df
@ -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;
|
||||
|
||||
|
@ -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);
|
||||
|
Loading…
Reference in New Issue
Block a user