// Author: David Elliott
// Modified by:
// Created: 2003/03/16
-// RCS-ID: $Id:
// Copyright: (c) 2003 David Elliott
-// Licence: wxWindows license
+// Licence: wxWindows licence
///////////////////////////////////////////////////////////////////////////////
#ifndef __WX_COCOA_NSWINDOW_H__
WX_DECLARE_OBJC_HASHMAP(NSWindow);
-class wxCocoaNSWindow
+class WXDLLIMPEXP_FWD_CORE wxMenuBar;
+class WXDLLIMPEXP_FWD_CORE wxTopLevelWindowCocoa;
+
+DECLARE_WXCOCOA_OBJC_CLASS(NSMenuItem);
+DECLARE_WXCOCOA_OBJC_CLASS(wxNSWindowDelegate);
+
+class WXDLLIMPEXP_CORE wxCocoaNSWindow
{
/* NSWindow is a rather special case and requires some extra attention */
WX_DECLARE_OBJC_INTERFACE_HASHMAP(NSWindow)
public:
void AssociateNSWindow(WX_NSWindow cocoaNSWindow);
void DisassociateNSWindow(WX_NSWindow cocoaNSWindow);
- virtual void Cocoa_close(void) = 0;
- virtual bool Cocoa_windowShouldClose(void) = 0;
- virtual void CocoaNotification_DidBecomeKey(void) { }
- virtual void CocoaNotification_DidResignKey(void) { }
+ virtual bool Cocoa_canBecomeKeyWindow(bool &WXUNUSED(canBecome))
+ { return false; }
+ virtual bool Cocoa_canBecomeMainWindow(bool &WXUNUSED(canBecome))
+ { return false; }
+ virtual bool CocoaDelegate_windowShouldClose(void) = 0;
+ virtual void CocoaDelegate_windowWillClose(void) = 0;
+ virtual void CocoaDelegate_windowDidBecomeKey(void) { }
+ virtual void CocoaDelegate_windowDidResignKey(void) { }
+ virtual void CocoaDelegate_windowDidBecomeMain(void) { }
+ virtual void CocoaDelegate_windowDidResignMain(void) { }
+ virtual void CocoaDelegate_wxMenuItemAction(WX_NSMenuItem menuItem) = 0;
+ virtual bool CocoaDelegate_validateMenuItem(WX_NSMenuItem menuItem) = 0;
+ virtual wxMenuBar* GetAppMenuBar(wxCocoaNSWindow *win);
+ inline wxTopLevelWindowCocoa* GetWxTopLevelWindowCocoa()
+ { return m_wxTopLevelWindowCocoa; }
protected:
- static void *sm_cocoaObserver;
+ wxCocoaNSWindow(wxTopLevelWindowCocoa *tlw = NULL);
+ virtual ~wxCocoaNSWindow();
+ WX_wxNSWindowDelegate m_cocoaDelegate;
+ wxTopLevelWindowCocoa *m_wxTopLevelWindowCocoa;
};
#endif // _WX_COCOA_NSWINDOW_H_