// 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
/////////////////////////////////////////////////////////////////////////////
// headers
// ----------------------------------------------------------------------------
-#ifdef __GNUG__
+#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
#pragma implementation "toplevel.h"
#endif
#include "wx/defs.h"
#include "wx/toplevel.h"
#include "wx/app.h"
+#include "wx/mgl/private.h"
// ----------------------------------------------------------------------------
// idle system
m_isIconized = FALSE;
m_isMaximized = FALSE;
m_fsIsShowing = FALSE;
+ m_sizeSet = FALSE;
}
bool wxTopLevelWindowMGL::Create(wxWindow *parent,
size.y = sizeDpy.y / 5;
}
- wxWindow::Create(parent, id, pos, sizeOrig, style, name);
+ wxWindow::Create(NULL, id, pos, sizeOrig, style, name);
+ SetParent(parent);
+ if ( parent )
+ parent->AddChild(this);
wxTopLevelWindows.Append(this);
-
m_title = title;
-
- // FIXME_MGL -- should activate itself when shown!
return TRUE;
}
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)
{
+ 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);
- 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;
}
}
}
}
-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