diff --git a/uppsrc/CtrlCore/CocoTop.h b/uppsrc/CtrlCore/CocoTop.h index cb0cfb976..ab7d01ad5 100644 --- a/uppsrc/CtrlCore/CocoTop.h +++ b/uppsrc/CtrlCore/CocoTop.h @@ -12,8 +12,10 @@ protected: static void SyncMainMenu(bool force); void *menubar = NULL; + Event MainMenu; public: - void SetMainMenu(Event menu); + virtual bool HotKey(dword key); -//$ }; \ No newline at end of file + void SetMainMenu(Event menu); + //$ }; \ No newline at end of file diff --git a/uppsrc/CtrlCore/CtrlKbd.cpp b/uppsrc/CtrlCore/CtrlKbd.cpp index 5486a2423..4639dd3fa 100644 --- a/uppsrc/CtrlCore/CtrlKbd.cpp +++ b/uppsrc/CtrlCore/CtrlKbd.cpp @@ -2,7 +2,7 @@ namespace Upp { -#define LLOG(x) // DLOG(x) +#define LLOG(x) // DLOG(x) Ptr Ctrl::focusCtrl; Ptr Ctrl::focusCtrlWnd; diff --git a/uppsrc/CtrlLib/MacMenu.mm b/uppsrc/CtrlLib/MacMenu.mm index 8d0921283..aa51f77de 100644 --- a/uppsrc/CtrlLib/MacMenu.mm +++ b/uppsrc/CtrlLib/MacMenu.mm @@ -3,7 +3,7 @@ #ifdef PLATFORM_COCOA -#define LLOG(x) DLOG(x) +#define LLOG(x) // DLOG(x) namespace Upp { @@ -195,6 +195,11 @@ bool CocoMenuBar::IsEmpty() const } } +- (void)menuDidClose:(NSMenu *)menu { + CocoMenu *m = (CocoMenu *)menu; + [m removeAllItems]; +} + -(void)submenuAction:(id)sender { if(ptr) proc(*ptr); @@ -218,6 +223,15 @@ void TopWindow::SetMainMenu(Event menu) CocoMenuBar& bar = *(CocoMenuBar *)menubar; bar.Set(menu); SyncMainMenu(true); + MainMenu = menu; +} + +bool TopWindow::HotKey(dword key) +{ + LLOG("TopWindow::HotKey " << GetKeyDesc(key)); + if(Bar::Scan(MainMenu, key)) + return true; + return Ctrl::HotKey(key); } TopWindow *TopWindow::GetMenuTopWindow()