diff --git a/src/x11/app.cpp b/src/x11/app.cpp index a35a1e0546..87b09f85cc 100644 --- a/src/x11/app.cpp +++ b/src/x11/app.cpp @@ -648,6 +648,7 @@ bool wxApp::ProcessXEvent(WXEvent* _event) { // Only erase background, paint in idle time. win->SendEraseEvents(); + //win->Update(); } return TRUE; diff --git a/src/x11/evtloop.cpp b/src/x11/evtloop.cpp index ebe1ebb13a..483c4683f0 100644 --- a/src/x11/evtloop.cpp +++ b/src/x11/evtloop.cpp @@ -170,7 +170,7 @@ int wxEventLoop::Run() #endif if (!m_impl->SendIdleEvent()) { -#if 0 // wxUSE_THREADS +#if wxUSE_THREADS // leave the main loop to give other threads a chance to // perform their GUI work wxMutexGuiLeave(); diff --git a/src/x11/toplevel.cpp b/src/x11/toplevel.cpp index 2fef702902..53c97f4033 100644 --- a/src/x11/toplevel.cpp +++ b/src/x11/toplevel.cpp @@ -260,6 +260,18 @@ bool wxTopLevelWindowX11::Show(bool show) m_needResizeInIdle = FALSE; } + if (show) + { + // This does the layout _before_ the + // window is shown, else the items are + // drawn first at the wrong positions, + // then at the correct positions. + if (GetAutoLayout()) + { + Layout(); + } + } + return wxWindowX11::Show(show); }