summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorbruvzg <7645683+bruvzg@users.noreply.github.com>2024-03-27 22:09:13 +0200
committerbruvzg <7645683+bruvzg@users.noreply.github.com>2024-03-27 22:26:44 +0200
commit37e0be37d8faa0c16059611017ac07bdc84c7410 (patch)
tree27edc2405c10ba28549d2e844e0c6f2a43f9403c
parent7d151c83811f8ac8873439826c16d88c83aba12f (diff)
downloadredot-engine-37e0be37d8faa0c16059611017ac07bdc84c7410.tar.gz
[macOS] Fix non-global native menu shortcuts.
-rw-r--r--platform/macos/display_server_macos.h2
-rw-r--r--platform/macos/display_server_macos.mm4
-rw-r--r--platform/macos/native_menu_macos.mm5
3 files changed, 11 insertions, 0 deletions
diff --git a/platform/macos/display_server_macos.h b/platform/macos/display_server_macos.h
index 09073a8030..7c9d073afc 100644
--- a/platform/macos/display_server_macos.h
+++ b/platform/macos/display_server_macos.h
@@ -241,6 +241,8 @@ public:
NSImage *_convert_to_nsimg(Ref<Image> &p_image) const;
Point2i _get_screens_origin() const;
+ void set_menu_delegate(NSMenu *p_menu);
+
void send_event(NSEvent *p_event);
void send_window_event(const WindowData &p_wd, WindowEvent p_event);
void release_pressed_events();
diff --git a/platform/macos/display_server_macos.mm b/platform/macos/display_server_macos.mm
index 99e9d20f2b..62c46a90c0 100644
--- a/platform/macos/display_server_macos.mm
+++ b/platform/macos/display_server_macos.mm
@@ -290,6 +290,10 @@ void DisplayServerMacOS::_update_displays_arrangement() {
displays_arrangement_dirty = false;
}
+void DisplayServerMacOS::set_menu_delegate(NSMenu *p_menu) {
+ [p_menu setDelegate:menu_delegate];
+}
+
Point2i DisplayServerMacOS::_get_screens_origin() const {
// Returns the native top-left screen coordinate of the smallest rectangle
// that encompasses all screens. Needed in get_screen_position(),
diff --git a/platform/macos/native_menu_macos.mm b/platform/macos/native_menu_macos.mm
index 250b64dc04..8c2dd98862 100644
--- a/platform/macos/native_menu_macos.mm
+++ b/platform/macos/native_menu_macos.mm
@@ -223,6 +223,11 @@ RID NativeMenuMacOS::get_system_menu(SystemMenus p_menu_id) const {
RID NativeMenuMacOS::create_menu() {
MenuData *md = memnew(MenuData);
md->menu = [[NSMenu alloc] initWithTitle:@""];
+ [md->menu setAutoenablesItems:NO];
+ DisplayServerMacOS *ds = (DisplayServerMacOS *)DisplayServer::get_singleton();
+ if (ds) {
+ ds->set_menu_delegate(md->menu);
+ }
RID rid = menus.make_rid(md);
menu_lookup[md->menu] = rid;
return rid;