X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/038072e2f1eaf2bf32d748a71234d767ebba8919..abad53678b86a84d34079d02d8d738a25df27c3f:/src/mgl/toplevel.cpp diff --git a/src/mgl/toplevel.cpp b/src/mgl/toplevel.cpp index a026f42f92..d02dac8c3e 100644 --- a/src/mgl/toplevel.cpp +++ b/src/mgl/toplevel.cpp @@ -28,6 +28,7 @@ #include "wx/defs.h" #include "wx/toplevel.h" +#include "wx/app.h" // ---------------------------------------------------------------------------- // idle system @@ -50,9 +51,11 @@ extern int g_openDialogs; void wxTopLevelWindowMGL::Init() { + m_isShown = FALSE; m_isIconized = FALSE; m_isMaximized = FALSE; m_fsIsShowing = FALSE; + m_sizeSet = FALSE; } bool wxTopLevelWindowMGL::Create(wxWindow *parent, @@ -74,15 +77,15 @@ bool wxTopLevelWindowMGL::Create(wxWindow *parent, if ( size.y == -1 ) size.y = sizeDpy.y / 5; } + + wxWindow::Create(NULL, id, pos, sizeOrig, style, name); + SetParent(parent); + if ( parent ) + parent->AddChild(this); wxTopLevelWindows.Append(this); - m_title = title; - - if (m_parent) - m_parent->AddChild(this); - return TRUE; } @@ -134,24 +137,45 @@ bool wxTopLevelWindowMGL::ShowFullScreen(bool show, long style) return TRUE; } +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? + return ret; +} + void wxTopLevelWindowMGL::Maximize(bool maximize) { 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); - m_isMaximized = TRUE; } else if ( !maximize && m_isMaximized ) { + m_isMaximized = FALSE; SetSize(m_savedFrame.x, m_savedFrame.y, m_savedFrame.width, m_savedFrame.height); - m_isMaximized = FALSE; } } @@ -162,19 +186,21 @@ bool wxTopLevelWindowMGL::IsMaximized() const void wxTopLevelWindowMGL::Restore() { - if ( m_isIconized ) + if ( IsIconized() ) { Iconize(FALSE); } - if ( m_isMaximized ) + if ( IsMaximized() ) { Maximize(FALSE); } } -void wxTopLevelWindowMGL::Iconize(bool iconize) +void wxTopLevelWindowMGL::Iconize(bool WXUNUSED(iconize)) { - // FIXME_MGL + 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