Fix of the "dock" menu on OSX to start a new instance of PrusaSlicer

in case a single instance is disabled.
Make the "single_instance" enabled by default on OSX initially
to match the platform.
This commit is contained in:
Vojtech Bubnik 2020-10-17 09:23:05 +02:00
parent 570f7b648e
commit 7896de892b
3 changed files with 12 additions and 3 deletions

View file

@ -577,7 +577,8 @@ int CLI::run(int argc, char **argv)
// #ifdef USE_WX
#if ENABLE_GCODE_VIEWER
GUI::GUI_App* gui = new GUI::GUI_App(start_as_gcodeviewer ? GUI::GUI_App::EAppMode::GCodeViewer : GUI::GUI_App::EAppMode::Editor);
if (gui->get_app_mode() != GUI::GUI_App::EAppMode::GCodeViewer) { // gcode viewer is currently not performing instance check
if (gui->get_app_mode() != GUI::GUI_App::EAppMode::GCodeViewer) {
// G-code viewer is currently not performing instance check, a new G-code viewer is started every time.
bool gui_single_instance_setting = gui->app_config->get("single_instance") == "1";
if (Slic3r::instance_check(argc, argv, gui_single_instance_setting)) {
//TODO: do we have delete gui and other stuff?

View file

@ -74,7 +74,13 @@ void AppConfig::set_defaults()
#endif
if (get("single_instance").empty())
set("single_instance", "0");
set("single_instance",
#ifdef __APPLE__
"1"
#else __APPLE__
"0"
#endif __APPLE__
);
if (get("remember_output_path").empty())
set("remember_output_path", "1");

View file

@ -56,7 +56,9 @@ public:
PrusaSlicerTaskBarIcon(wxTaskBarIconType iconType = wxTBI_DEFAULT_TYPE) : wxTaskBarIcon(iconType) {}
wxMenu *CreatePopupMenu() override {
wxMenu *menu = new wxMenu;
if(wxGetApp().app_config->get("single_instance") == "1") {
if(wxGetApp().app_config->get("single_instance") == "0") {
// Only allow opening a new PrusaSlicer instance on OSX if "single_instance" is disabled,
// as starting new instances would interfere with the locking mechanism of "single_instance" support.
append_menu_item(menu, wxID_ANY, _L("Open new instance"), _L("Open a new PrusaSlicer instance"),
[this](wxCommandEvent&) { start_new_slicer(); }, "", nullptr);
}