X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/d1bb1bb5bf6daca7842a619d420f64268f806ee9..b2b4f8c0ca2884f99a923d30b4b37b12c76e936b:/src/dfb/toplevel.cpp diff --git a/src/dfb/toplevel.cpp b/src/dfb/toplevel.cpp index b5dcc161da..bb1620b49a 100644 --- a/src/dfb/toplevel.cpp +++ b/src/dfb/toplevel.cpp @@ -270,12 +270,11 @@ bool wxTopLevelWindowDFB::ShowFullScreen(bool show, long style) bool wxTopLevelWindowDFB::Show(bool show) { + // NB: this calls wxWindow::Show() and so ensures DoRefreshWindow() is + // called on the window -- we'll need that below if ( !wxTopLevelWindowBase::Show(show) ) return false; - // hide/show the window by setting its opacity to 0/full: - m_dfbwin->SetOpacity(show ? m_opacity : 0); - // 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 ) @@ -286,6 +285,17 @@ bool wxTopLevelWindowDFB::Show(bool show) GetEventHandler()->ProcessEvent(event); } + // make sure the window is fully painted, with all pending updates, before + // DFB WM shows it, otherwise it would attempt to show either empty (= + // black) window surface (if shown for the first time) or it would show + // window with outdated content; note that the window was already refreshed + // in the wxTopLevelWindowBase::Show() call above: + if ( show ) + Update(); + + // hide/show the window by setting its opacity to 0/full: + m_dfbwin->SetOpacity(show ? m_opacity : 0); + if ( show ) { wxWindow *focused = wxWindow::FindFocus();