Use one wxNSWindowDelegate instance per wxCocoaNSWindow instance
[wxWidgets.git] / include / wx / cocoa / NSWindow.h
1 ///////////////////////////////////////////////////////////////////////////////
2 // Name: wx/cocoa/NSWindow.h
3 // Purpose: wxCocoaNSWindow class
4 // Author: David Elliott
5 // Modified by:
6 // Created: 2003/03/16
7 // RCS-ID: $Id:
8 // Copyright: (c) 2003 David Elliott
9 // Licence: wxWindows license
10 ///////////////////////////////////////////////////////////////////////////////
11
12 #ifndef __WX_COCOA_NSWINDOW_H__
13 #define __WX_COCOA_NSWINDOW_H__
14
15 #include "wx/hashmap.h"
16 #include "wx/cocoa/ObjcAssociate.h"
17
18 WX_DECLARE_OBJC_HASHMAP(NSWindow);
19
20 class WXDLLEXPORT wxMenuBar;
21
22 DECLARE_WXCOCOA_OBJC_CLASS(wxNSWindowDelegate);
23
24 class wxCocoaNSWindow
25 {
26 /* NSWindow is a rather special case and requires some extra attention */
27 WX_DECLARE_OBJC_INTERFACE_HASHMAP(NSWindow)
28 public:
29 void AssociateNSWindow(WX_NSWindow cocoaNSWindow);
30 void DisassociateNSWindow(WX_NSWindow cocoaNSWindow);
31 virtual bool Cocoa_canBecomeMainWindow(bool &canBecome)
32 { return false; }
33 virtual bool CocoaDelegate_windowShouldClose(void) = 0;
34 virtual void CocoaDelegate_windowWillClose(void) = 0;
35 virtual void CocoaDelegate_windowDidBecomeKey(void) { }
36 virtual void CocoaDelegate_windowDidResignKey(void) { }
37 virtual void CocoaDelegate_windowDidBecomeMain(void) { }
38 virtual void CocoaDelegate_windowDidResignMain(void) { }
39 virtual wxMenuBar* GetAppMenuBar(wxCocoaNSWindow *win);
40 protected:
41 wxCocoaNSWindow();
42 virtual ~wxCocoaNSWindow();
43 WX_wxNSWindowDelegate m_cocoaDelegate;
44 };
45
46 #endif // _WX_COCOA_NSWINDOW_H_