X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/fa5f4858288ebd8e031b9d3e89d4ec89e8f212e7..7e22c2bd02fcd8f6759dfbbf626302dd4a51822a:/src/msw/toplevel.cpp diff --git a/src/msw/toplevel.cpp b/src/msw/toplevel.cpp index dc5b8bd83d..a61f3336a7 100644 --- a/src/msw/toplevel.cpp +++ b/src/msw/toplevel.cpp @@ -225,7 +225,7 @@ WXDWORD wxTopLevelWindowMSW::MSWGetStyle(long style, WXDWORD *exflags) const msflags |= WS_MAXIMIZE; // Keep this here because it saves recoding this function in wxTinyFrame - if ( style & (wxTINY_CAPTION_VERT | wxTINY_CAPTION_HORIZ) ) + if ( style & wxTINY_CAPTION ) msflags |= WS_CAPTION; if ( exflags ) @@ -662,6 +662,16 @@ bool wxTopLevelWindowMSW::Show(bool show) nShowCmd = SW_HIDE; } + // we only set pending size if we're maximized before being shown, now that + // we're shown we don't need it any more (it is reset in size event handler + // for child windows but we have to do it ourselves for this parent window) + // + // make sure to reset it before actually showing the window as this will + // generate WM_SIZE events and we want to use the correct client size from + // them, not the size returned by WM_NCCALCSIZE in DoGetClientSize() which + // turns out to be wrong for maximized windows (see #11762) + m_pendingSize = wxDefaultSize; + DoShowWindow(nShowCmd); #if defined(__WXWINCE__) && (_WIN32_WCE >= 400 && !defined(__POCKETPC__) && !defined(__SMARTPHONE__)) @@ -671,11 +681,6 @@ bool wxTopLevelWindowMSW::Show(bool show) frame->GetMenuBar()->AddAdornments(GetWindowStyleFlag()); #endif - // we only set pending size if we're maximized before being shown, now that - // we're shown we don't need it any more (it is reset in size event handler - // for child windows but we have to do it ourselves for this parent window) - m_pendingSize = wxDefaultSize; - return true; }