X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/1272e71b8ab50b65f24036a7fd0002d1bef59928..8e5ec129614e2473fd240f2a6e94ee56e3a9039b:/src/msw/toplevel.cpp diff --git a/src/msw/toplevel.cpp b/src/msw/toplevel.cpp index c1bba3066e..d7bf04d4aa 100644 --- a/src/msw/toplevel.cpp +++ b/src/msw/toplevel.cpp @@ -24,9 +24,10 @@ #pragma hdrstop #endif +#include "wx/toplevel.h" + #ifndef WX_PRECOMP #include "wx/app.h" - #include "wx/toplevel.h" #include "wx/dialog.h" #include "wx/string.h" #include "wx/log.h" @@ -177,9 +178,8 @@ WXDWORD wxTopLevelWindowMSW::MSWGetStyle(long style, WXDWORD *exflags) const // WS_POPUP in a few cases just to avoid having caption/border which we // don't want -#if !(defined(__SMARTPHONE__) && defined(__WXWINCE__)) // border and caption styles - if ( style & wxRESIZE_BORDER ) + if ( ( style & wxRESIZE_BORDER ) && !IsAlwaysMaximized()) msflags |= WS_THICKFRAME; else if ( exflags && ((style & wxBORDER_DOUBLE) || (style & wxBORDER_RAISED)) ) *exflags |= WS_EX_DLGMODALFRAME; @@ -188,7 +188,6 @@ WXDWORD wxTopLevelWindowMSW::MSWGetStyle(long style, WXDWORD *exflags) const #ifndef __POCKETPC__ else msflags |= WS_POPUP; -#endif #endif // normally we consider that all windows without a caption must be popups, @@ -208,10 +207,19 @@ WXDWORD wxTopLevelWindowMSW::MSWGetStyle(long style, WXDWORD *exflags) const #endif // next translate the individual flags - if ( style & wxMINIMIZE_BOX ) - msflags |= WS_MINIMIZEBOX; - if ( style & wxMAXIMIZE_BOX ) - msflags |= WS_MAXIMIZEBOX; + + // WS_EX_CONTEXTHELP is incompatible with WS_MINIMIZEBOX and WS_MAXIMIZEBOX + // and is ignored if we specify both of them, but chances are that if we + // use wxFRAME_EX_CONTEXTHELP, we really do want to have the context help + // button while wxMINIMIZE/wxMAXIMIZE are included by default, so the help + // takes precedence + if ( !(GetExtraStyle() & wxFRAME_EX_CONTEXTHELP) ) + { + if ( style & wxMINIMIZE_BOX ) + msflags |= WS_MINIMIZEBOX; + if ( style & wxMAXIMIZE_BOX ) + msflags |= WS_MAXIMIZEBOX; + } #ifndef __WXWINCE__ if ( style & wxSYSTEM_MENU ) @@ -223,10 +231,8 @@ WXDWORD wxTopLevelWindowMSW::MSWGetStyle(long style, WXDWORD *exflags) const if ( style & wxMINIMIZE ) msflags |= WS_MINIMIZE; -#if !defined(__POCKETPC__) if ( style & wxMAXIMIZE ) msflags |= WS_MAXIMIZE; -#endif // Keep this here because it saves recoding this function in wxTinyFrame if ( style & (wxTINY_CAPTION_VERT | wxTINY_CAPTION_HORIZ) ) @@ -495,15 +501,16 @@ bool wxTopLevelWindowMSW::CreateFrame(const wxString& title, WXDWORD exflags; WXDWORD flags = MSWGetCreateWindowFlags(&exflags); -#if !defined(__HANDHELDPC__) && ((defined(_WIN32_WCE) && _WIN32_WCE < 400) || \ - defined(__POCKETPC__) || \ - defined(__SMARTPHONE__)) - // Always expand to fit the screen in PocketPC or SmartPhone - wxSize sz(wxDefaultSize); - wxUnusedVar(size); -#else // other (including normal desktop) Windows - wxSize sz(size); -#endif + wxSize sz; + + if (IsAlwaysMaximized()) + { + sz = wxDefaultSize; + } + else + { + sz = size; + } bool result = MSWCreate(wxCanvasClassName, title, pos, sz, flags, exflags); @@ -599,7 +606,7 @@ bool wxTopLevelWindowMSW::Create(wxWindow *parent, // Note: if we include PocketPC in this test, dialogs can fail to show up, // for example the text entry dialog in the dialogs sample. Problem with Maximise()? #if defined(__WXWINCE__) && (defined(__SMARTPHONE__) || defined(__WINCE_STANDARDSDK__)) - if ( style & wxMAXIMIZE ) + if ( ( style & wxMAXIMIZE ) || IsAlwaysMaximized() ) { this->Maximize(); } @@ -724,11 +731,11 @@ void wxTopLevelWindowMSW::Maximize(bool maximize) bool wxTopLevelWindowMSW::IsMaximized() const { -#ifdef __WXWINCE__ - return false; -#else - return m_maximizeOnShow || ::IsZoomed(GetHwnd()) != 0; + return IsAlwaysMaximized() || +#if !defined(__SMARTPHONE__) && !defined(__POCKETPC__) + (::IsZoomed(GetHwnd()) != 0) || #endif + m_maximizeOnShow; } void wxTopLevelWindowMSW::Iconize(bool iconize)