+#import <Foundation/NSNotification.h>
+#import <Foundation/NSString.h>
+
+// ============================================================================
+// @class wxNSWindowDelegate
+// ============================================================================
+@interface wxNSWindowDelegate : NSObject
+{
+}
+
+- (void)windowDidBecomeKey: (NSNotification *)notification;
+- (void)windowDidResignKey: (NSNotification *)notification;
+- (void)windowDidBecomeMain: (NSNotification *)notification;
+- (void)windowDidResignMain: (NSNotification *)notification;
+- (BOOL)windowShouldClose: (id)sender;
+- (void)windowWillClose: (NSNotification *)notification;
+@end //interface wxNSWindowDelegate
+
+@implementation wxNSWindowDelegate : NSObject
+
+- (void)windowDidBecomeKey: (NSNotification *)notification
+{
+ wxCocoaNSWindow *win = wxCocoaNSWindow::GetFromCocoa([notification object]);
+ wxCHECK_RET(win,"notificationDidBecomeKey received but no wxWindow exists");
+ win->CocoaDelegate_windowDidBecomeKey();
+}
+
+- (void)windowDidResignKey: (NSNotification *)notification
+{
+ wxCocoaNSWindow *win = wxCocoaNSWindow::GetFromCocoa([notification object]);
+ wxCHECK_RET(win,"notificationDidResignKey received but no wxWindow exists");
+ win->CocoaDelegate_windowDidResignKey();
+}
+
+- (void)windowDidBecomeMain: (NSNotification *)notification
+{
+ wxCocoaNSWindow *win = wxCocoaNSWindow::GetFromCocoa([notification object]);
+ wxCHECK_RET(win,"notificationDidBecomeMain received but no wxWindow exists");
+ win->CocoaDelegate_windowDidBecomeMain();
+}
+
+- (void)windowDidResignMain: (NSNotification *)notification
+{
+ wxCocoaNSWindow *win = wxCocoaNSWindow::GetFromCocoa([notification object]);
+ wxCHECK_RET(win,"notificationDidResignMain received but no wxWindow exists");
+ win->CocoaDelegate_windowDidResignMain();
+}
+
+- (BOOL)windowShouldClose: (id)sender
+{
+ wxLogDebug("windowShouldClose");
+ wxCocoaNSWindow *tlw = wxCocoaNSWindow::GetFromCocoa(sender);
+ if(tlw && !tlw->CocoaDelegate_windowShouldClose())
+ {
+ wxLogDebug("Window will not be closed");
+ return NO;
+ }
+ wxLogDebug("Window will be closed");
+ return YES;
+}
+
+- (void)windowWillClose: (NSNotification *)notification
+{
+ wxCocoaNSWindow *win = wxCocoaNSWindow::GetFromCocoa([notification object]);
+ wxCHECK_RET(win,"windowWillClose received but no wxWindow exists");
+ win->CocoaDelegate_windowWillClose();
+}
+
+@end //implementation wxNSWindowDelegate
+
+// ============================================================================
+// class wxCocoaNSWindow
+// ============================================================================