X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/3d1a1d2df6345ebea69490e03d0befa0def83fd3..2bd6022f1c25a202fa54f9a6e63cffe0e3e15eac:/src/msw/toplevel.cpp diff --git a/src/msw/toplevel.cpp b/src/msw/toplevel.cpp index bc1168f6a1..40a506ca96 100644 --- a/src/msw/toplevel.cpp +++ b/src/msw/toplevel.cpp @@ -177,9 +177,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 +187,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, @@ -223,10 +221,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) ) @@ -315,9 +311,13 @@ WXHWND wxTopLevelWindowMSW::MSWGetParent() const #if defined(__SMARTPHONE__) || defined(__POCKETPC__) bool wxTopLevelWindowMSW::HandleSettingChange(WXWPARAM wParam, WXLPARAM lParam) { - SHACTIVATEINFO* info = (SHACTIVATEINFO*) m_activateInfo; - if (!info) return false; - return SHHandleWMSettingChange(GetHwnd(), wParam, lParam, info) == TRUE; + SHACTIVATEINFO *info = (SHACTIVATEINFO*) m_activateInfo; + if ( info ) + { + SHHandleWMSettingChange(GetHwnd(), wParam, lParam, info); + } + + return wxWindowMSW::HandleSettingChange(wParam, lParam); } #endif @@ -326,9 +326,9 @@ WXLRESULT wxTopLevelWindowMSW::MSWWindowProc(WXUINT message, WXWPARAM wParam, WX WXLRESULT rc = 0; bool processed = false; +#if defined(__SMARTPHONE__) || defined(__POCKETPC__) switch ( message ) { -#if defined(__SMARTPHONE__) || defined(__POCKETPC__) case WM_ACTIVATE: { SHACTIVATEINFO* info = (SHACTIVATEINFO*) m_activateInfo; @@ -345,11 +345,6 @@ WXLRESULT wxTopLevelWindowMSW::MSWWindowProc(WXUINT message, WXWPARAM wParam, WX break; } - case WM_SETTINGCHANGE: - { - processed = HandleSettingChange(wParam,lParam); - break; - } case WM_HIBERNATE: { if (wxTheApp) @@ -360,8 +355,8 @@ WXLRESULT wxTopLevelWindowMSW::MSWWindowProc(WXUINT message, WXWPARAM wParam, WX } break; } -#endif } +#endif if ( !processed ) rc = wxTopLevelWindowBase::MSWWindowProc(message, wParam, lParam); @@ -496,15 +491,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); @@ -600,7 +596,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(); } @@ -705,27 +701,31 @@ void wxTopLevelWindowMSW::Maximize(bool maximize) } else // hidden { - // we can't maximize the hidden frame because it shows it as well, so - // just remember that we should do it later in this case + // we can't maximize the hidden frame because it shows it as well, + // so just remember that we should do it later in this case m_maximizeOnShow = maximize; // after calling Maximize() the client code expects to get the frame // "real" size and doesn't want to know that, because of implementation // details, the frame isn't really maximized yet but will be only once // it's shown, so return our size as it will be then in this case - - // we don't know which display we're on yet so use the default one - SetSize(wxGetClientDisplayRect().GetSize()); + if ( maximize ) + { + // unfortunately we don't know which display we're on yet so we + // have to use the default one + SetSize(wxGetClientDisplayRect().GetSize()); + } + //else: can't do anything in this case, we don't have the old size } } 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) @@ -738,10 +738,11 @@ bool wxTopLevelWindowMSW::IsIconized() const #ifdef __WXWINCE__ return false; #else - // also update the current state - ((wxTopLevelWindowMSW *)this)->m_iconized = ::IsIconic(GetHwnd()) != 0; - - return m_iconized; + // don't use m_iconized, it may be briefly out of sync with the real state + // as it's only modified when we receive a WM_SIZE and we could be called + // from an event handler from one of the messages we receive before it, + // such as WM_MOVE + return ::IsIconic(GetHwnd()) != 0; #endif } @@ -884,7 +885,7 @@ void wxTopLevelWindowMSW::SetIcons(const wxIconBundle& icons) { wxTopLevelWindowBase::SetIcons(icons); -#if defined(__WIN95__) && !defined(__WXMICROWIN__) +#if !defined(__WXMICROWIN__) const wxIcon& sml = icons.GetIcon( wxSize( 16, 16 ) ); if( sml.Ok() && sml.GetWidth() == 16 && sml.GetHeight() == 16 ) { @@ -898,7 +899,7 @@ void wxTopLevelWindowMSW::SetIcons(const wxIconBundle& icons) ::SendMessage( GetHwndOf( this ), WM_SETICON, ICON_BIG, (LPARAM)GetHiconOf(big) ); } -#endif // __WIN95__ +#endif // !__WXMICROWIN__ } bool wxTopLevelWindowMSW::EnableCloseButton(bool enable) @@ -1090,8 +1091,8 @@ void wxTopLevelWindowMSW::OnActivate(wxActivateEvent& event) LONG APIENTRY _EXPORT wxDlgProc(HWND hDlg, UINT message, - WPARAM wParam, - LPARAM lParam) + WPARAM WXUNUSED(wParam), + LPARAM WXUNUSED(lParam)) { switch ( message ) { @@ -1123,18 +1124,6 @@ wxDlgProc(HWND hDlg, // ourselves, we return FALSE for it as well return FALSE; } - - case WM_SETTINGCHANGE: - { -#if defined(__SMARTPHONE__) || defined(__POCKETPC__) - wxTopLevelWindow *tlw = wxDynamicCast(wxGetWindowFromHWND(hDlg), wxTopLevelWindow); - if(tlw) return tlw->HandleSettingChange(wParam,lParam) ? TRUE : FALSE; -#else - wxUnusedVar(wParam); - wxUnusedVar(lParam); -#endif - break; - } } // for almost all messages, returning FALSE means that we didn't process