X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/837e57436a89516a5fa9f478f401e06bd872c17c..d1d7cdff87c64552187e1984d86c8f7a8b94fdb7:/src/msw/frame.cpp diff --git a/src/msw/frame.cpp b/src/msw/frame.cpp index 48d39d7495..4cba2dd81f 100644 --- a/src/msw/frame.cpp +++ b/src/msw/frame.cpp @@ -86,9 +86,6 @@ bool wxFrame::Create(wxWindow *parent, m_hwndToolTip = 0; #endif - if (!parent) - wxTopLevelWindows.Append(this); - SetName(name); m_windowStyle = style; m_frameMenuBar = NULL; @@ -119,6 +116,9 @@ bool wxFrame::Create(wxWindow *parent, if ((m_windowStyle & wxFRAME_FLOAT_ON_PARENT) == 0) parent = NULL; + if (!parent) + wxTopLevelWindows.Append(this); + MSWCreate(m_windowId, parent, wxFrameClassName, this, title, x, y, width, height, style); @@ -609,17 +609,29 @@ void wxFrame::OnSize(wxSizeEvent& event) // subwindow found. void wxFrame::OnActivate(wxActivateEvent& event) { - for(wxNode *node = GetChildren().First(); node; node = node->Next()) - { - // Find a child that's a subwindow, but not a dialog box. - wxWindow *child = (wxWindow *)node->Data(); - if (!child->IsKindOf(CLASSINFO(wxFrame)) && - !child->IsKindOf(CLASSINFO(wxDialog))) + for ( wxWindowList::Node *node = GetChildren().GetFirst(); + node; + node = node->GetNext() ) { - child->SetFocus(); - return; + // FIXME all this is totally bogus - we need to do the same as wxPanel, + // but how to do it without duplicating the code? + + // restore focus + wxWindow *child = node->GetData(); + + if ( !child->IsTopLevel() +#if wxUSE_TOOLBAR + && !wxDynamicCast(child, wxToolBar) +#endif // wxUSE_TOOLBAR +#if wxUSE_STATUSBAR + && !wxDynamicCast(child, wxStatusBar) +#endif // wxUSE_STATUSBAR + ) + { + child->SetFocus(); + return; + } } - } } // The default implementation for the close window event.