// wxTopLevelWindowCocoa implementation
// ============================================================================
+wxTopLevelWindowCocoa *wxTopLevelWindowCocoa::sm_cocoaDeactivateWindow = NULL;
+
// ----------------------------------------------------------------------------
// wxTopLevelWindowCocoa creation
// ----------------------------------------------------------------------------
wxTopLevelWindowCocoa::~wxTopLevelWindowCocoa()
{
+ wxASSERT(sm_cocoaDeactivateWindow!=this);
wxAutoNSAutoreleasePool pool;
DestroyChildren();
SetNSWindow(NULL);
}
+bool wxTopLevelWindowCocoa::Destroy()
+{
+ if(sm_cocoaDeactivateWindow==this)
+ {
+ sm_cocoaDeactivateWindow = NULL;
+ wxTopLevelWindowCocoa::CocoaDelegate_windowDidResignKey();
+ }
+ return wxTopLevelWindowBase::Destroy();
+}
+
// ----------------------------------------------------------------------------
// wxTopLevelWindowCocoa Cocoa Specifics
// ----------------------------------------------------------------------------
[m_cocoaNSWindow setContentView:newView];
}
+/*static*/ void wxTopLevelWindowCocoa::DeactivatePendingWindow()
+{
+ if(sm_cocoaDeactivateWindow)
+ sm_cocoaDeactivateWindow->wxTopLevelWindowCocoa::CocoaDelegate_windowDidResignKey();
+ sm_cocoaDeactivateWindow = NULL;
+}
+
void wxTopLevelWindowCocoa::CocoaDelegate_windowDidBecomeKey(void)
{
+ DeactivatePendingWindow();
wxLogDebug("wxTopLevelWindowCocoa=%p::CocoaDelegate_windowDidBecomeKey",this);
wxActivateEvent event(wxEVT_ACTIVATE, TRUE, GetId());
event.SetEventObject(this);
{
m_closed = true;
Destroy();
- /* Be SURE that idle events get ran. If the window was not active when
- it was closed, then there will be no more events to trigger this and
- therefore it must be done here */
- wxTheApp->CocoaInstallRequestedIdleHandler();
}
bool wxTopLevelWindowCocoa::CocoaDelegate_windowShouldClose()