X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/9cce2fe26c25ba4c16e61a2a8447667c7ee3e98b..8cee4a304f691adf6a8863abd303ea7ae34fefd5:/src/msw/toplevel.cpp?ds=sidebyside diff --git a/src/msw/toplevel.cpp b/src/msw/toplevel.cpp index ac97ecbbef..82f995b9f4 100644 --- a/src/msw/toplevel.cpp +++ b/src/msw/toplevel.cpp @@ -17,10 +17,6 @@ // headers // ---------------------------------------------------------------------------- -#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) - #pragma implementation "toplevel.h" -#endif - // For compilers that support precompilation, includes "wx.h". #include "wx/wxprec.h" @@ -447,10 +443,6 @@ bool wxTopLevelWindowMSW::CreateFrame(const wxString& title, bool result = MSWCreate(wxCanvasClassName, title, pos, sz, flags, exflags); -#ifdef __SMARTPHONE__ - // Work around title non-display glitch - Show(false); -#endif return result; } @@ -531,26 +523,17 @@ bool wxTopLevelWindowMSW::Create(wxWindow *parent, } #endif - // for some reason we need to manually send ourselves this message as - // otherwise the mnemonics are always shown -- even if they're configured - // to be hidden until "Alt" is pressed in the control panel - // - // this could indicate a bug somewhere else but for now this is the only - // fix we have + // for standard dialogs the dialog manager generates WM_CHANGEUISTATE + // itself but for custom windows we have to do it ourselves in order to + // make the keyboard indicators (such as underlines for accelerators and + // focus rectangles) work under Win2k+ if ( ret ) { - ::SendMessage - ( - GetHwnd(), - WM_UPDATEUISTATE, - MAKEWPARAM(UIS_INITIALIZE, UISF_HIDEFOCUS | UISF_HIDEACCEL), - 0 - ); + MSWUpdateUIState(UIS_INITIALIZE); } - // Native look is full screen window on Smartphones and Standard SDK. - // TODO: check that we need this (if we're passing default values to ctor). - // Also check that there really is a difference between PocketPC and Smartphone in this regard. + // 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 ) { @@ -673,6 +656,14 @@ void wxTopLevelWindowMSW::Maximize(bool maximize) // 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()); } } @@ -681,7 +672,7 @@ bool wxTopLevelWindowMSW::IsMaximized() const #ifdef __WXWINCE__ return false; #else - return ::IsZoomed(GetHwnd()) != 0; + return m_maximizeOnShow || ::IsZoomed(GetHwnd()) != 0; #endif } @@ -762,7 +753,7 @@ bool wxTopLevelWindowMSW::ShowFullScreen(bool show, long style) rect = wxDisplay(dpy).GetGeometry(); } else // fall back to the main desktop -#else // wxUSE_DISPLAY +#endif // wxUSE_DISPLAY { // resize to the size of the desktop wxCopyRECTToRect(wxGetWindowRect(::GetDesktopWindow()), rect); @@ -773,7 +764,6 @@ bool wxTopLevelWindowMSW::ShowFullScreen(bool show, long style) rect.y = 0; #endif } -#endif // wxUSE_DISPLAY SetSize(rect); @@ -933,10 +923,12 @@ bool wxTopLevelWindowMSW::SetShape(const wxRegion& region) void wxTopLevelWindowMSW::RequestUserAttention(int flags) { - // check if we can use FlashWindowEx(): unfortunately an explicit test for - // FLASHW_STOP, for example, doesn't work because MSVC6 headers do #define - // it but don't provide FlashWindowEx() declaration -#if (WINVER >= 0x0500 && (defined FLASHW_STOP)) + // check if we can use FlashWindowEx(): unfortunately a simple test for + // FLASHW_STOP doesn't work because MSVC6 headers do #define it but don't + // provide FlashWindowEx() declaration, so try to detect whether we have + // real headers for WINVER 0x0500 by checking for existence of a symbol not + // declated in MSVC6 header +#if defined(FLASHW_STOP) && defined(VK_XBUTTON1) // available in the headers, check if it is supported by the system typedef BOOL (WINAPI *FlashWindowEx_t)(FLASHWINFO *pfwi); FlashWindowEx_t s_pfnFlashWindowEx = NULL; @@ -946,7 +938,7 @@ void wxTopLevelWindowMSW::RequestUserAttention(int flags) s_pfnFlashWindowEx = (FlashWindowEx_t) dllUser32.GetSymbol(_T("FlashWindowEx")); - // we can safely unload user32.dll here, it's goign to remain loaded as + // we can safely unload user32.dll here, it's going to remain loaded as // long as the program is running anyhow }