// Author: David Elliott
// Modified by:
// Created: 2002/12/08
-// RCS-ID: $Id:
+// RCS-ID: $Id$
// Copyright: (c) 2002 David Elliott
-// Licence: wxWindows license
+// Licence: wxWindows licence
///////////////////////////////////////////////////////////////////////////////
#ifndef __WX_COCOA_TOPLEVEL_H__
virtual void CocoaDelegate_windowDidBecomeMain(void);
virtual void CocoaDelegate_windowDidResignMain(void);
virtual wxMenuBar* GetAppMenuBar(wxCocoaNSWindow *win);
+ static void DeactivatePendingWindow();
protected:
void SetNSWindow(WX_NSWindow cocoaNSWindow);
WX_NSWindow m_cocoaNSWindow;
virtual void CocoaReplaceView(WX_NSView oldView, WX_NSView newView);
static unsigned int NSWindowStyleForWxStyle(long style);
+ static wxTopLevelWindowCocoa *sm_cocoaDeactivateWindow;
// ------------------------------------------------------------------------
// Implementation
// ------------------------------------------------------------------------
public:
+ virtual bool Destroy();
// Pure virtuals
virtual void Maximize(bool maximize = true);
virtual bool IsMaximized() const;
// 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);