From 866f4da2c759b5da92b39546f4f78bb8ea74db52 Mon Sep 17 00:00:00 2001 From: cxl Date: Fri, 14 Dec 2018 08:49:25 +0000 Subject: [PATCH] CtrlCore: Cocoa Fixed menu hotkeys git-svn-id: svn://ultimatepp.org/upp/trunk@12618 f0d560ea-af0d-0410-9eb7-867de7ffcac7 --- uppsrc/CtrlCore/CocoTop.h | 6 ++++-- uppsrc/CtrlCore/CtrlKbd.cpp | 2 +- uppsrc/CtrlLib/MacMenu.mm | 16 +++++++++++++++- 3 files changed, 20 insertions(+), 4 deletions(-) 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()