X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/04ef50df3a0fa3c343800c554e609f98fc7575cc..94e2ed3b8db0220160c0b939782cd46914ec073a:/src/msw/frame.cpp?ds=sidebyside diff --git a/src/msw/frame.cpp b/src/msw/frame.cpp index f7b9b64311..b1b4e12a8f 100644 --- a/src/msw/frame.cpp +++ b/src/msw/frame.cpp @@ -64,7 +64,6 @@ // ---------------------------------------------------------------------------- extern wxWindowList wxModelessWindows; -extern wxList WXDLLEXPORT wxPendingDelete; extern const wxChar *wxFrameClassName; #if wxUSE_MENUS_NATIVE @@ -80,8 +79,9 @@ BEGIN_EVENT_TABLE(wxFrameMSW, wxFrameBase) EVT_SYS_COLOUR_CHANGED(wxFrameMSW::OnSysColourChanged) END_EVENT_TABLE() -IMPLEMENT_DYNAMIC_CLASS(wxFrameMSW, wxWindow) -IMPLEMENT_DYNAMIC_CLASS(wxFrame, wxFrameMSW) +#ifndef __WXUNIVERSAL__ + IMPLEMENT_DYNAMIC_CLASS(wxFrame, wxWindow) +#endif // ============================================================================ // implementation @@ -138,15 +138,6 @@ bool wxFrameMSW::Create(wxWindow *parent, { SetName(name); m_windowStyle = style; -#if wxUSE_MENUS - m_frameMenuBar = NULL; -#endif // wxUSE_MENUS -#if wxUSE_TOOLBAR - m_frameToolBar = NULL; -#endif // wxUSE_TOOLBAR -#if wxUSE_STATUSBAR - m_frameStatusBar = NULL; -#endif // wxUSE_STATUSBAR SetBackgroundColour(wxSystemSettings::GetSystemColour(wxSYS_COLOUR_APPWORKSPACE)); @@ -166,7 +157,10 @@ bool wxFrameMSW::Create(wxWindow *parent, wxTopLevelWindows.Append(this); - MSWCreate(m_windowId, parent, wxFrameClassName, this, title, + // the frame must have NULL parent HWND or it would be always on top of its + // parent which is not what we usually want (in fact, we only want it for + // frames with the special wxFRAME_TOOL_WINDOW style handled elsewhere) + MSWCreate(m_windowId, NULL, wxFrameClassName, this, title, x, y, width, height, style); wxModelessWindows.Append(this); @@ -485,24 +479,12 @@ void wxFrameMSW::PositionStatusBar() } #endif // wxUSE_STATUSBAR -void wxFrameMSW::DetachMenuBar() -{ -#if wxUSE_MENUS - if ( m_frameMenuBar ) - { - m_frameMenuBar->Detach(); - m_frameMenuBar = NULL; - } -#endif // wxUSE_MENUS -} +#if wxUSE_MENUS_NATIVE -void wxFrameMSW::SetMenuBar(wxMenuBar *menubar) +void wxFrameMSW::AttachMenuBar(wxMenuBar *menubar) { -#if wxUSE_MENUS - // detach the old menu bar in any case - DetachMenuBar(); + wxFrameBase::AttachMenuBar(menubar); -#if wxUSE_MENUS_NATIVE if ( !menubar ) { // actually remove the menu from the frame @@ -516,31 +498,21 @@ void wxFrameMSW::SetMenuBar(wxMenuBar *menubar) { m_hMenu = menubar->GetHMenu(); } - else + else // no HMENU yet { - if (menubar->IsAttached()) - menubar->Detach(); - m_hMenu = menubar->Create(); if ( !m_hMenu ) + { + wxFAIL_MSG( _T("failed to create menu bar") ); return; + } } InternalSetMenuBar(); } -#endif // wxUSE_MENUS_NATIVE - - if ( menubar ) - { - m_frameMenuBar = menubar; - menubar->Attach((wxFrame *)this); - } -#endif // wxUSE_MENUS } -#if wxUSE_MENUS_NATIVE - void wxFrameMSW::InternalSetMenuBar() { #ifndef __WXMICROWIN__ @@ -925,7 +897,7 @@ void wxFrameMSW::IconizeChildFrames(bool bIconize) // the child MDI frames are a special case and should not be touched by // the parent frame - instead, they are managed by the user - wxFrameMSW *frame = wxDynamicCast(win, wxFrameMSW); + wxFrameMSW *frame = wxDynamicCast(win, wxFrame); if ( frame #if wxUSE_MDI_ARCHITECTURE && !wxDynamicCast(frame, wxMDIChildFrame)