X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/c6f73d05ccfcb08fc5d245ba49b73d8e0cd43d4d..b0b96f667dbc2fc2d3ebaa342c50bdea10f84a91:/src/cocoa/NSWindow.mm?ds=sidebyside diff --git a/src/cocoa/NSWindow.mm b/src/cocoa/NSWindow.mm index a0c4a5f196..792f701b19 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: wxWidgets licence ///////////////////////////////////////////////////////////////////////////// // ============================================================================ @@ -49,6 +49,10 @@ - (void)windowDidResignMain: (NSNotification *)notification; - (BOOL)windowShouldClose: (id)sender; - (void)windowWillClose: (NSNotification *)notification; + +// Menu item handlers +- (void)wxMenuItemAction: (NSMenuItem *)menuItem; +- (BOOL)validateMenuItem: (NSMenuItem *)menuItem; @end //interface wxNSWindowDelegate @implementation wxNSWindowDelegate : NSObject @@ -69,6 +73,7 @@ return m_wxCocoaInterface; } +// Delegate message handlers - (void)windowDidBecomeKey: (NSNotification *)notification { wxCocoaNSWindow *win = wxCocoaNSWindow::GetFromCocoa([notification object]); @@ -123,6 +128,19 @@ win->CocoaDelegate_windowWillClose(); } +// Menu item handlers +- (void)wxMenuItemAction: (NSMenuItem *)sender +{ + wxASSERT(m_wxCocoaInterface); + m_wxCocoaInterface->CocoaDelegate_wxMenuItemAction(sender); +} + +- (BOOL)validateMenuItem: (NSMenuItem *)sender +{ + wxASSERT(m_wxCocoaInterface); + return m_wxCocoaInterface->CocoaDelegate_validateMenuItem(sender); +} + @end //implementation wxNSWindowDelegate // ============================================================================ @@ -131,7 +149,8 @@ WX_IMPLEMENT_OBJC_INTERFACE_HASHMAP(NSWindow) -wxCocoaNSWindow::wxCocoaNSWindow() +wxCocoaNSWindow::wxCocoaNSWindow(wxTopLevelWindowCocoa *tlw) +: m_wxTopLevelWindowCocoa(tlw) { m_cocoaDelegate = [[wxNSWindowDelegate alloc] init]; [m_cocoaDelegate setWxCocoaInterface: this]; @@ -174,12 +193,22 @@ wxMenuBar* wxCocoaNSWindow::GetAppMenuBar(wxCocoaNSWindow *win) { } +- (BOOL)canBecomeKeyWindow; - (BOOL)canBecomeMainWindow; @end // wxPoserNSwindow WX_IMPLEMENT_POSER(wxPoserNSWindow); @implementation wxPoserNSWindow : NSWindow +- (BOOL)canBecomeKeyWindow +{ + bool canBecome = false; + wxCocoaNSWindow *tlw = wxCocoaNSWindow::GetFromCocoa(self); + if(!tlw || !tlw->Cocoa_canBecomeKeyWindow(canBecome)) + canBecome = [super canBecomeKeyWindow]; + return canBecome; +} + - (BOOL)canBecomeMainWindow { bool canBecome = false; @@ -190,4 +219,3 @@ WX_IMPLEMENT_POSER(wxPoserNSWindow); } @end // implementation wxPoserNSWindow -