X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/12447831a8ebc506f730cafac6f6ef13f243b7d2..4769a5627519643ba2cfd8be8e329f806901d025:/src/msw/toplevel.cpp diff --git a/src/msw/toplevel.cpp b/src/msw/toplevel.cpp index d737b9a679..6d5605551f 100644 --- a/src/msw/toplevel.cpp +++ b/src/msw/toplevel.cpp @@ -244,7 +244,7 @@ WXHWND wxTopLevelWindowMSW::MSWGetParent() const parent = ms_hiddenParent; } - return parent ? parent->GetHWND() : NULL; + return parent ? parent->GetHWND() : WXHWND(NULL); } bool wxTopLevelWindowMSW::CreateDialog(const void *dlgTemplate, @@ -454,12 +454,12 @@ wxTopLevelWindowMSW::~wxTopLevelWindowMSW() if ( this == ms_hiddenParent ) { // stop [infinite] recursion which would otherwise happen when we do - // "delete ms_hiddenParent" below + // "delete ms_hiddenParent" below -- and we're not interested in doing + // anything of the rest below for that window because the rest of + // wxWindows doesn't even know about it return; } - wxTopLevelWindows.DeleteObject(this); - if ( wxModelessWindows.Find(this) ) wxModelessWindows.DeleteObject(this); @@ -476,21 +476,15 @@ wxTopLevelWindowMSW::~wxTopLevelWindowMSW() } } - // If this is the last top-level window, exit. - if ( wxTheApp && (wxTopLevelWindows.Number() == 0) ) + // if this is the last top-level window, we're going to exit and we should + // delete ms_hiddenParent now to avoid leaking it + if ( IsLastBeforeExit() ) { if ( ms_hiddenParent ) { delete ms_hiddenParent; ms_hiddenParent = NULL; } - - wxTheApp->SetTopWindow(NULL); - - if ( wxTheApp->GetExitOnFrameDelete() ) - { - ::PostQuitMessage(0); - } } } @@ -741,7 +735,7 @@ void wxTopLevelWindowMSW::OnActivate(wxActivateEvent& event) if ( event.GetActive() ) { // restore focus to the child which was last focused - wxLogTrace(_T("focus"), _T("wxTLW %08x activated."), m_hWnd); + wxLogTrace(_T("focus"), _T("wxTLW %08x activated."), (int) m_hWnd); wxWindow *parent = m_winLastFocused ? m_winLastFocused->GetParent() : NULL; @@ -776,9 +770,9 @@ void wxTopLevelWindowMSW::OnActivate(wxActivateEvent& event) wxLogTrace(_T("focus"), _T("wxTLW %08x deactivated, last focused: %08x."), - m_hWnd, - m_winLastFocused ? GetHwndOf(m_winLastFocused) - : NULL); + (int) m_hWnd, + (int) (m_winLastFocused ? GetHwndOf(m_winLastFocused) + : NULL)); event.Skip(); }