parent = ms_hiddenParent;
}
- return parent ? parent->GetHWND() : NULL;
+ return parent ? parent->GetHWND() : WXHWND(NULL);
}
bool wxTopLevelWindowMSW::CreateDialog(const void *dlgTemplate,
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);
}
}
- // 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);
- }
}
}
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;
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();
}