* Added delegate notifications for Become/Resign Main

* Added canBecomeMainWindow


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@23384 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
David Elliott 2003-09-04 20:59:30 +00:00
parent 1a249e049a
commit 8fc821cccf
2 changed files with 30 additions and 0 deletions

View File

@ -25,9 +25,13 @@ public:
void AssociateNSWindow(WX_NSWindow cocoaNSWindow);
void DisassociateNSWindow(WX_NSWindow cocoaNSWindow);
virtual void Cocoa_close(void) = 0;
virtual bool Cocoa_canBecomeMainWindow(bool &canBecome)
{ return false; }
virtual bool CocoaDelegate_windowShouldClose(void) = 0;
virtual void CocoaDelegate_windowDidBecomeKey(void) { }
virtual void CocoaDelegate_windowDidResignKey(void) { }
virtual void CocoaDelegate_windowDidBecomeMain(void) { }
virtual void CocoaDelegate_windowDidResignMain(void) { }
protected:
static struct objc_object *sm_cocoaDelegate;
};

View File

@ -39,6 +39,8 @@
- (void)windowDidBecomeKey: (NSNotification *)notification;
- (void)windowDidResignKey: (NSNotification *)notification;
- (void)windowDidBecomeMain: (NSNotification *)notification;
- (void)windowDidResignMain: (NSNotification *)notification;
- (BOOL)windowShouldClose: (id)sender;
@end //interface wxNSWindowDelegate
@ -58,6 +60,20 @@
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");
@ -108,6 +124,7 @@ void wxCocoaNSWindow::DisassociateNSWindow(WX_NSWindow cocoaNSWindow)
}
- (void)close;
- (BOOL)canBecomeMainWindow;
@end // wxPoserNSwindow
WX_IMPLEMENT_POSER(wxPoserNSWindow);
@ -122,5 +139,14 @@ WX_IMPLEMENT_POSER(wxPoserNSWindow);
[super close];
}
- (BOOL)canBecomeMainWindow
{
bool canBecome = false;
wxCocoaNSWindow *tlw = wxCocoaNSWindow::GetFromCocoa(self);
if(!tlw || !tlw->Cocoa_canBecomeMainWindow(canBecome))
canBecome = [super canBecomeMainWindow];
return canBecome;
}
@end // implementation wxPoserNSWindow