diff --git a/src/gui/menu_macos.mm b/src/gui/menu_macos.mm index 5e1266d21..de9084f22 100644 --- a/src/gui/menu_macos.mm +++ b/src/gui/menu_macos.mm @@ -196,6 +196,14 @@ void menu_macosx_set_menuobj(DOSBoxMenu *new_altMenu) { } } +- (void)DOSBoxXMenuActionNewInstance:(id)sender +{ + (void)sender; + if (is_paused || MAPPER_IsRunning() || GUI_IsRunning()) return; + void NewInstanceEvent(bool pressed); + NewInstanceEvent(true); +} + - (void)DOSBoxXMenuActionMapper:(id)sender { (void)sender; @@ -469,6 +477,30 @@ void macosx_init_dock_menu(void) { [item release]; } + { + bool enable = false; + extern std::string MacOSXEXEPath; + if (!MacOSXEXEPath.empty()) { + if (MacOSXEXEPath.at(0) == '/') { + enable = true; + } + } + + if (enable) { + { + NSMenuItem *item = [NSMenuItem separatorItem]; + [menu addItem:item]; + [item release]; + } + + NSString *title = [[NSString alloc] initWithUTF8String: "Start new instance"]; + NSMenuItem *item = [[NSMenuItem alloc] initWithTitle:title action:@selector(DOSBoxXMenuActionNewInstance:) keyEquivalent:@""]; + [menu addItem:item]; + [title release]; + [item release]; + } + } + sdl1_hax_set_dock_menu(menu); [menu release]; diff --git a/src/gui/sdlmain.cpp b/src/gui/sdlmain.cpp index cb8752280..072de76d3 100644 --- a/src/gui/sdlmain.cpp +++ b/src/gui/sdlmain.cpp @@ -1637,7 +1637,7 @@ bool CheckQuit(void) { return true; } -static void NewInstanceEvent(bool pressed) { +void NewInstanceEvent(bool pressed) { if (!pressed) return; #if defined(MACOSX) pid_t p = fork();