Skip to content

Commit 37e0be3

Browse files
committed
[macOS] Fix non-global native menu shortcuts.
1 parent 7d151c8 commit 37e0be3

File tree

3 files changed

+11
-0
lines changed

3 files changed

+11
-0
lines changed

platform/macos/display_server_macos.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -241,6 +241,8 @@ class DisplayServerMacOS : public DisplayServer {
241241
NSImage *_convert_to_nsimg(Ref<Image> &p_image) const;
242242
Point2i _get_screens_origin() const;
243243

244+
void set_menu_delegate(NSMenu *p_menu);
245+
244246
void send_event(NSEvent *p_event);
245247
void send_window_event(const WindowData &p_wd, WindowEvent p_event);
246248
void release_pressed_events();

platform/macos/display_server_macos.mm

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -290,6 +290,10 @@
290290
displays_arrangement_dirty = false;
291291
}
292292

293+
void DisplayServerMacOS::set_menu_delegate(NSMenu *p_menu) {
294+
[p_menu setDelegate:menu_delegate];
295+
}
296+
293297
Point2i DisplayServerMacOS::_get_screens_origin() const {
294298
// Returns the native top-left screen coordinate of the smallest rectangle
295299
// that encompasses all screens. Needed in get_screen_position(),

platform/macos/native_menu_macos.mm

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -223,6 +223,11 @@
223223
RID NativeMenuMacOS::create_menu() {
224224
MenuData *md = memnew(MenuData);
225225
md->menu = [[NSMenu alloc] initWithTitle:@""];
226+
[md->menu setAutoenablesItems:NO];
227+
DisplayServerMacOS *ds = (DisplayServerMacOS *)DisplayServer::get_singleton();
228+
if (ds) {
229+
ds->set_menu_delegate(md->menu);
230+
}
226231
RID rid = menus.make_rid(md);
227232
menu_lookup[md->menu] = rid;
228233
return rid;

0 commit comments

Comments
 (0)