X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/b7a015cbb4425fbd18aa43165bebd217f0dbfe92..a51e79e87db3512823258d487849bb7e7947b700:/src/osx/cocoa/menu.mm diff --git a/src/osx/cocoa/menu.mm b/src/osx/cocoa/menu.mm index ea02cf9f2b..760f159263 100644 --- a/src/osx/cocoa/menu.mm +++ b/src/osx/cocoa/menu.mm @@ -4,7 +4,7 @@ // Author: Stefan Csomor // Modified by: // Created: 1998-01-01 -// RCS-ID: $Id: menu.cpp 54129 2008-06-11 19:30:52Z SC $ +// RCS-ID: $Id$ // Copyright: (c) Stefan Csomor // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// @@ -18,16 +18,16 @@ #include "wx/wxprec.h" -#include "wx/menu.h" - #ifndef WX_PRECOMP - #include "wx/log.h" - #include "wx/app.h" - #include "wx/utils.h" - #include "wx/frame.h" - #include "wx/menuitem.h" +#include "wx/log.h" +#include "wx/app.h" +#include "wx/utils.h" +#include "wx/frame.h" +#include "wx/menuitem.h" #endif +#include "wx/menu.h" + #include "wx/osx/private.h" // other standard headers @@ -36,9 +36,9 @@ @implementation wxNSMenu -- (id) init +- (id) initWithTitle:(NSString*) title { - [super init]; + self = [super initWithTitle:title]; impl = NULL; return self; } @@ -55,12 +55,20 @@ @end +// this is more compatible, as it is also called for command-key shortcuts +// and under 10.4, we are not getting a 'close' event however... +#define wxOSX_USE_NEEDSUPDATE_HOOK 1 + @interface wxNSMenuController : NSObject wxOSX_10_6_AND_LATER() { } +#if wxOSX_USE_NEEDSUPDATE_HOOK +- (void)menuNeedsUpdate:(NSMenu*)smenu; +#else - (void)menuWillOpen:(NSMenu *)menu; - (void)menuDidClose:(NSMenu *)menu; +#endif - (void)menu:(NSMenu *)menu willHighlightItem:(NSMenuItem *)item; @end @@ -69,10 +77,23 @@ - (id) init { - [super init]; + self = [super init]; return self; } +#if wxOSX_USE_NEEDSUPDATE_HOOK +- (void)menuNeedsUpdate:(NSMenu*)smenu +{ + wxNSMenu* menu = (wxNSMenu*) smenu; + wxMenuImpl* menuimpl = [menu implementation]; + if ( menuimpl ) + { + wxMenu* wxpeer = (wxMenu*) menuimpl->GetWXPeer(); + if ( wxpeer ) + wxpeer->HandleMenuOpened(); + } +} +#else - (void)menuWillOpen:(NSMenu *)smenu { wxNSMenu* menu = (wxNSMenu*) smenu; @@ -96,6 +117,7 @@ wxpeer->HandleMenuClosed(); } } +#endif - (void)menu:(NSMenu *)smenu willHighlightItem:(NSMenuItem *)item { @@ -144,7 +166,7 @@ public : virtual void InsertOrAppend(wxMenuItem *pItem, size_t pos) { NSMenuItem* nsmenuitem = (NSMenuItem*) pItem->GetPeer()->GetHMenuItem(); - // make sure a call of SetSubMenu is also reflected (occuring after Create) + // make sure a call of SetSubMenu is also reflected (occurring after Create) // update the native menu item accordingly if ( pItem->IsSubMenu() )