]> git.saurik.com Git - wxWidgets.git/blobdiff - src/mgl/toplevel.cpp
Suboptimal wxColour::CreateByName implementation for wxMotif.
[wxWidgets.git] / src / mgl / toplevel.cpp
index 3f2bbcd209f4d9f904cb33430b9fa8cf3dcf32b8..e75baca885c279596821dba727368ecb66710666 100644 (file)
@@ -3,7 +3,7 @@
 // Purpose:
 // Author:      Vaclav Slavik
 // Id:          $Id$
 // 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
 /////////////////////////////////////////////////////////////////////////////
 
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
@@ -15,7 +15,7 @@
 // headers
 // ----------------------------------------------------------------------------
 
 // headers
 // ----------------------------------------------------------------------------
 
-#ifdef __GNUG__
+#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
     #pragma implementation "toplevel.h"
 #endif
 
     #pragma implementation "toplevel.h"
 #endif
 
@@ -29,6 +29,7 @@
 #include "wx/defs.h"
 #include "wx/toplevel.h"
 #include "wx/app.h"
 #include "wx/defs.h"
 #include "wx/toplevel.h"
 #include "wx/app.h"
+#include "wx/mgl/private.h"
 
 // ----------------------------------------------------------------------------
 // idle system
 
 // ----------------------------------------------------------------------------
 // idle system
@@ -55,6 +56,7 @@ void wxTopLevelWindowMGL::Init()
     m_isIconized = FALSE;
     m_isMaximized = FALSE;
     m_fsIsShowing = FALSE;
     m_isIconized = FALSE;
     m_isMaximized = FALSE;
     m_fsIsShowing = FALSE;
+    m_sizeSet = FALSE;
 }
 
 bool wxTopLevelWindowMGL::Create(wxWindow *parent,
 }
 
 bool wxTopLevelWindowMGL::Create(wxWindow *parent,
@@ -83,7 +85,6 @@ bool wxTopLevelWindowMGL::Create(wxWindow *parent,
         parent->AddChild(this);
 
     wxTopLevelWindows.Append(this);
         parent->AddChild(this);
 
     wxTopLevelWindows.Append(this);
-
     m_title = title;
 
     return TRUE;
     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);
 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?
     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)
 {
 
 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 )
     {
     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);
 
         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 )
         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
 }
 
 bool wxTopLevelWindowMGL::IsIconized() const