X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/06a848bc42600ba5a7fdb7cfe792772981afdbc8..169adfa9c4b781f737920bc808da91cd926c3e36:/src/msw/toplevel.cpp diff --git a/src/msw/toplevel.cpp b/src/msw/toplevel.cpp index c8d5ef01f2..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" @@ -527,21 +523,13 @@ 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); } // Note: if we include PocketPC in this test, dialogs can fail to show up, @@ -668,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()); } }