X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/55cd5d10cd919f9cd50f9e9403f5f74a03c6f057..2edac25b2ea3876bf57a54d314d59050b5fbd8e7:/src/msw/window.cpp?ds=sidebyside diff --git a/src/msw/window.cpp b/src/msw/window.cpp index 1f4fe79892..53d7313f36 100644 --- a/src/msw/window.cpp +++ b/src/msw/window.cpp @@ -716,6 +716,16 @@ bool wxWindowMSW::Show(bool show) ::ShowWindow(hWnd, show ? SW_SHOW : SW_HIDE); } + if ( IsFrozen() ) + { + // DoFreeze/DoThaw don't do anything if the window is not shown, so + // we have to call them from here now + if ( show ) + DoFreeze(); + else + DoThaw(); + } + return true; } @@ -725,6 +735,9 @@ wxWindowMSW::MSWShowWithEffect(bool show, unsigned timeout, wxDirection dir) { + if ( !wxWindowBase::Show(show) ) + return false; + typedef BOOL (WINAPI *AnimateWindow_t)(HWND, DWORD, DWORD); static AnimateWindow_t s_pfnAnimateWindow = NULL; @@ -1612,20 +1625,22 @@ static inline void SendSetRedraw(HWND hwnd, bool on) void wxWindowMSW::DoFreeze() { - if ( IsShown() ) - SendSetRedraw(GetHwnd(), false); + if ( !IsShown() ) + return; // no point in freezing hidden window + + SendSetRedraw(GetHwnd(), false); } void wxWindowMSW::DoThaw() { - if ( IsShown() ) - { - SendSetRedraw(GetHwnd(), true); + if ( !IsShown() ) + return; // hidden windows aren't frozen by DoFreeze - // we need to refresh everything or otherwise the invalidated area - // is not going to be repainted - Refresh(); - } + SendSetRedraw(GetHwnd(), true); + + // we need to refresh everything or otherwise the invalidated area + // is not going to be repainted + Refresh(); } void wxWindowMSW::Refresh(bool eraseBack, const wxRect *rect)