- (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
{
wxCocoaNSWindow *win = wxCocoaNSWindow::GetFromCocoa([notification object]);
wxCHECK_RET(win,"notificationDidBecomeKey received but no wxWindow exists");
- win->CocoaNotification_DidBecomeKey();
+ win->CocoaDelegate_windowDidBecomeKey();
}
- (void)windowDidResignKey: (NSNotification *)notification
{
wxCocoaNSWindow *win = wxCocoaNSWindow::GetFromCocoa([notification object]);
wxCHECK_RET(win,"notificationDidResignKey received but no wxWindow exists");
- win->CocoaNotification_DidResignKey();
+ 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
{
}
-- (void)close;
-- (BOOL)windowShouldClose: (id)sender;
-
+- (BOOL)canBecomeMainWindow;
@end // wxPoserNSwindow
WX_IMPLEMENT_POSER(wxPoserNSWindow);
@implementation wxPoserNSWindow : NSWindow
-- (void)close
+- (BOOL)canBecomeMainWindow
{
- wxLogDebug("close");
+ bool canBecome = false;
wxCocoaNSWindow *tlw = wxCocoaNSWindow::GetFromCocoa(self);
- if(tlw)
- tlw->Cocoa_close();
- [super close];
-}
-
-- (BOOL)windowShouldClose: (id)sender
-{
- wxLogDebug("windowShouldClose");
- wxCocoaNSWindow *tlw = wxCocoaNSWindow::GetFromCocoa(sender);
- if(tlw && !tlw->Cocoa_windowShouldClose())
- return NO;
- wxLogDebug("Window will most likely be CLOSED");
- if([[wxPoserNSWindow superclass] instancesRespondToSelector:@selector(windowShouldClose:)])
- return [super windowShouldClose: sender];
- return YES;
+ if(!tlw || !tlw->Cocoa_canBecomeMainWindow(canBecome))
+ canBecome = [super canBecomeMainWindow];
+ return canBecome;
}
@end // implementation wxPoserNSWindow