From f41ed3c4424167578262d283865b4642f2da8271 Mon Sep 17 00:00:00 2001 From: =?utf8?q?V=C3=A1clav=20Slav=C3=ADk?= Date: Sun, 28 Oct 2001 23:25:35 +0000 Subject: [PATCH] minor wxMGL fixes -- controls sample is now OK git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@12194 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- include/wx/mgl/toplevel.h | 9 ++++++--- include/wx/mgl/window.h | 4 ++-- src/mgl/clipbrd.cpp | 1 + src/mgl/evtloop.cpp | 4 ++++ src/mgl/timer.cpp | 1 + src/mgl/toplevel.cpp | 12 ++++++++++++ src/mgl/window.cpp | 2 +- 7 files changed, 27 insertions(+), 6 deletions(-) diff --git a/include/wx/mgl/toplevel.h b/include/wx/mgl/toplevel.h index 859d9a3849..8753702958 100644 --- a/include/wx/mgl/toplevel.h +++ b/include/wx/mgl/toplevel.h @@ -71,16 +71,19 @@ protected: void Init(); wxString m_title; - bool m_fsIsShowing; /* full screen */ + bool m_fsIsShowing:1; /* full screen */ long m_fsSaveStyle; long m_fsSaveFlag; wxRect m_fsSaveFrame; // is the frame currently iconized? - bool m_isIconized; + bool m_isIconized:1; // and maximized? - bool m_isMaximized; + bool m_isMaximized:1; wxRect m_savedFrame; + + // did we sent wxSizeEvent at least once? + bool m_sizeSet:1; }; #endif // __WX_TOPLEVEL_H__ diff --git a/include/wx/mgl/window.h b/include/wx/mgl/window.h index 6fc01f5d82..5bf12728de 100644 --- a/include/wx/mgl/window.h +++ b/include/wx/mgl/window.h @@ -111,8 +111,8 @@ protected: struct window_t *m_wnd; // whether there should be wxEraseEvent before wxPaintEvent or not // (see wxWindow::Refresh) - bool m_frozen; - bool m_refreshAfterThaw; + bool m_frozen:1; + bool m_refreshAfterThaw:1; int m_eraseBackground; // implement the base class pure virtuals diff --git a/src/mgl/clipbrd.cpp b/src/mgl/clipbrd.cpp index 6dc3737658..ae9430e41d 100644 --- a/src/mgl/clipbrd.cpp +++ b/src/mgl/clipbrd.cpp @@ -15,6 +15,7 @@ #if wxUSE_CLIPBOARD +// FIXME_MGL IMPLEMENT_DYNAMIC_CLASS(wxClipboard,wxObject) diff --git a/src/mgl/evtloop.cpp b/src/mgl/evtloop.cpp index 7f3971cfe5..d19bd8639c 100644 --- a/src/mgl/evtloop.cpp +++ b/src/mgl/evtloop.cpp @@ -152,6 +152,10 @@ void wxEventLoop::Exit(int rc) m_impl->SetExitCode(rc); m_impl->SetKeepLooping(FALSE); + + // Send a dummy event so that the app won't block in EVT_halt if there + // are no user-generated events in the queue: + EVT_post(0, EVT_USEREVT, 0, 0); } // ---------------------------------------------------------------------------- diff --git a/src/mgl/timer.cpp b/src/mgl/timer.cpp index f4c026db15..dbef60e5dd 100644 --- a/src/mgl/timer.cpp +++ b/src/mgl/timer.cpp @@ -21,3 +21,4 @@ IMPLEMENT_ABSTRACT_CLASS(wxTimer,wxObject) +// FIXME_MGL diff --git a/src/mgl/toplevel.cpp b/src/mgl/toplevel.cpp index 3f2bbcd209..f1cbc37ca7 100644 --- a/src/mgl/toplevel.cpp +++ b/src/mgl/toplevel.cpp @@ -55,6 +55,7 @@ void wxTopLevelWindowMGL::Init() m_isIconized = FALSE; m_isMaximized = FALSE; m_fsIsShowing = FALSE; + m_sizeSet = FALSE; } bool wxTopLevelWindowMGL::Create(wxWindow *parent, @@ -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? diff --git a/src/mgl/window.cpp b/src/mgl/window.cpp index dac506d518..cb44a8ad26 100644 --- a/src/mgl/window.cpp +++ b/src/mgl/window.cpp @@ -1129,7 +1129,7 @@ void wxWindowMGL::HandlePaint(MGLDevCtx *dc) #if 0 // FIXME_MGL -- debugging stuff! dc->setColorRGB(255,0,255); dc->fillRect(-1000,-1000,2000,2000); - wxUsleep(100); + wxUsleep(50); #endif MGLRegion clip; -- 2.45.2