X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/b8c0528db3989dcfbc32e034f4a3e059021f28e7..b6ed2b860c3ffe62bc9556e799e129109b232487:/src/mgl/toplevel.cpp?ds=sidebyside diff --git a/src/mgl/toplevel.cpp b/src/mgl/toplevel.cpp index 3f2bbcd209..2d23ae16d3 100644 --- a/src/mgl/toplevel.cpp +++ b/src/mgl/toplevel.cpp @@ -3,7 +3,7 @@ // Purpose: // Author: Vaclav Slavik // Id: $Id$ -// Copyright: (c) 2001 SciTech Software, Inc. (www.scitechsoft.com) +// Copyright: (c) 2001-2002 SciTech Software, Inc. (www.scitechsoft.com) // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// @@ -29,6 +29,7 @@ #include "wx/defs.h" #include "wx/toplevel.h" #include "wx/app.h" +#include "wx/mgl/private.h" // ---------------------------------------------------------------------------- // idle system @@ -55,6 +56,7 @@ void wxTopLevelWindowMGL::Init() m_isIconized = FALSE; m_isMaximized = FALSE; m_fsIsShowing = FALSE; + m_sizeSet = FALSE; } bool wxTopLevelWindowMGL::Create(wxWindow *parent, @@ -83,7 +85,6 @@ bool wxTopLevelWindowMGL::Create(wxWindow *parent, parent->AddChild(this); wxTopLevelWindows.Append(this); - m_title = title; return TRUE; @@ -140,6 +141,17 @@ bool wxTopLevelWindowMGL::ShowFullScreen(bool show, long style) bool wxTopLevelWindowMGL::Show(bool show) { bool ret = wxTopLevelWindowBase::Show(show); + + // If this is the first time Show was called, send size event, + // so that the frame can adjust itself (think auto layout or single child) + if ( !m_sizeSet ) + { + m_sizeSet = TRUE; + wxSizeEvent event(GetSize(), GetId()); + event.SetEventObject(this); + GetEventHandler()->ProcessEvent(event); + } + if ( ret && show && AcceptsFocus() ) SetFocus(); // FIXME_MGL -- don't do this for popup windows? @@ -148,16 +160,19 @@ bool wxTopLevelWindowMGL::Show(bool show) void wxTopLevelWindowMGL::Maximize(bool maximize) { + int x, y, w, h; + wxClientDisplayRect(&x, &y, &w, &h); + + rect_t screenRect = MGL_defRect(x, y, w, h); + MGL_wmInvalidateRect(g_winMng, &screenRect); + if ( maximize && !m_isMaximized ) { - int x, y, w, h; - m_isMaximized = TRUE; GetPosition(&m_savedFrame.x, &m_savedFrame.y); GetSize(&m_savedFrame.width, &m_savedFrame.height); - wxClientDisplayRect(&x, &y, &w, &h); SetSize(x, y, w, h); } else if ( !maximize && m_isMaximized ) @@ -185,9 +200,11 @@ void wxTopLevelWindowMGL::Restore() } } -void wxTopLevelWindowMGL::Iconize(bool iconize) +void wxTopLevelWindowMGL::Iconize(bool WXUNUSED(iconize)) { - // FIXME_MGL - use wxDesktop for this + wxFAIL_MSG(wxT("Iconize not supported under wxMGL")); + // FIXME_MGL - Iconize is not supported in fullscreen mode. + // It will be supported in windowed mode (if ever implemented in MGL...) } bool wxTopLevelWindowMGL::IsIconized() const