X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/86adc75813eedc3eabf746e30c8a571d528439a3..fab8784c715b09462d6b05dd93a3b4776cb205c9:/src/cocoa/NSWindow.mm diff --git a/src/cocoa/NSWindow.mm b/src/cocoa/NSWindow.mm index bde3aa64ce..fa11d3ad5d 100644 --- a/src/cocoa/NSWindow.mm +++ b/src/cocoa/NSWindow.mm @@ -1,12 +1,12 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: cocoa/NSWindow.mm +// Name: src/cocoa/NSWindow.mm // Purpose: wxCocoaNSWindow // Author: David Elliott // Modified by: // Created: 2003/03/16 -// RCS-ID: $Id: +// RCS-ID: $Id$ // Copyright: (c) 2003 David Elliott -// Licence: wxWindows license +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// // ============================================================================ @@ -23,12 +23,13 @@ #include "wx/menuitem.h" #endif // WX_PRECOMP -#include "wx/cocoa/ObjcPose.h" #include "wx/cocoa/NSWindow.h" -#import +#include "wx/cocoa/objc/objc_uniquifying.h" + #import #import +#include "wx/cocoa/objc/NSWindow.h" // ============================================================================ // @class wxNSWindowDelegate @@ -51,9 +52,10 @@ - (void)windowWillClose: (NSNotification *)notification; // Menu item handlers -- (void)wxMenuItemAction: (id)sender; -- (BOOL)validateMenuItem: (id)menuItem; +- (void)wxMenuItemAction: (NSMenuItem *)menuItem; +- (BOOL)validateMenuItem: (NSMenuItem *)menuItem; @end //interface wxNSWindowDelegate +WX_DECLARE_GET_OBJC_CLASS(wxNSWindowDelegate,NSObject) @implementation wxNSWindowDelegate : NSObject @@ -129,19 +131,20 @@ } // Menu item handlers -- (void)wxMenuItemAction: (id)sender +- (void)wxMenuItemAction: (NSMenuItem *)sender { wxASSERT(m_wxCocoaInterface); m_wxCocoaInterface->CocoaDelegate_wxMenuItemAction(sender); } -- (BOOL)validateMenuItem: (id)sender +- (BOOL)validateMenuItem: (NSMenuItem *)sender { wxASSERT(m_wxCocoaInterface); return m_wxCocoaInterface->CocoaDelegate_validateMenuItem(sender); } @end //implementation wxNSWindowDelegate +WX_IMPLEMENT_GET_OBJC_CLASS(wxNSWindowDelegate,NSObject) // ============================================================================ // class wxCocoaNSWindow @@ -149,9 +152,10 @@ WX_IMPLEMENT_OBJC_INTERFACE_HASHMAP(NSWindow) -wxCocoaNSWindow::wxCocoaNSWindow() +wxCocoaNSWindow::wxCocoaNSWindow(wxTopLevelWindowCocoa *tlw) +: m_wxTopLevelWindowCocoa(tlw) { - m_cocoaDelegate = [[wxNSWindowDelegate alloc] init]; + m_cocoaDelegate = [[WX_GET_OBJC_CLASS(wxNSWindowDelegate) alloc] init]; [m_cocoaDelegate setWxCocoaInterface: this]; } @@ -186,17 +190,44 @@ wxMenuBar* wxCocoaNSWindow::GetAppMenuBar(wxCocoaNSWindow *win) } // ============================================================================ -// @class wxPoserNSWindow +// @class WXNSWindow // ============================================================================ -@interface wxPoserNSWindow : NSWindow +@implementation WXNSWindow : NSWindow + +- (BOOL)canBecomeKeyWindow { + bool canBecome = false; + wxCocoaNSWindow *tlw = wxCocoaNSWindow::GetFromCocoa(self); + if(!tlw || !tlw->Cocoa_canBecomeKeyWindow(canBecome)) + canBecome = [super canBecomeKeyWindow]; + return canBecome; } -- (BOOL)canBecomeMainWindow; -@end // wxPoserNSwindow +- (BOOL)canBecomeMainWindow +{ + bool canBecome = false; + wxCocoaNSWindow *tlw = wxCocoaNSWindow::GetFromCocoa(self); + if(!tlw || !tlw->Cocoa_canBecomeMainWindow(canBecome)) + canBecome = [super canBecomeMainWindow]; + return canBecome; +} + +@end // implementation WXNSWindow +WX_IMPLEMENT_GET_OBJC_CLASS(WXNSWindow,NSWindow) -WX_IMPLEMENT_POSER(wxPoserNSWindow); -@implementation wxPoserNSWindow : NSWindow +// ============================================================================ +// @class WXNSPanel +// ============================================================================ +@implementation WXNSPanel : NSPanel + +- (BOOL)canBecomeKeyWindow +{ + bool canBecome = false; + wxCocoaNSWindow *tlw = wxCocoaNSWindow::GetFromCocoa(self); + if(!tlw || !tlw->Cocoa_canBecomeKeyWindow(canBecome)) + canBecome = [super canBecomeKeyWindow]; + return canBecome; +} - (BOOL)canBecomeMainWindow { @@ -207,5 +238,5 @@ WX_IMPLEMENT_POSER(wxPoserNSWindow); return canBecome; } -@end // implementation wxPoserNSWindow - +@end // implementation WXNSPanel +WX_IMPLEMENT_GET_OBJC_CLASS(WXNSPanel,NSPanel)