diff --git a/extras/Introjucer/Source/Project/jucer_ProjectContentComponent.cpp b/extras/Introjucer/Source/Project/jucer_ProjectContentComponent.cpp index c1d9450fef..34191a9118 100644 --- a/extras/Introjucer/Source/Project/jucer_ProjectContentComponent.cpp +++ b/extras/Introjucer/Source/Project/jucer_ProjectContentComponent.cpp @@ -594,8 +594,11 @@ StringArray ProjectContentComponent::getExportersWhichCanLaunch() const return s; } -void ProjectContentComponent::openInIDE (int exporterIndex) +void ProjectContentComponent::openInIDE (int exporterIndex, bool saveFirst) { + if (saveFirst) + saveProject(); + int i = 0; if (project != nullptr) @@ -605,13 +608,13 @@ void ProjectContentComponent::openInIDE (int exporterIndex) break; } -static void openIDEMenuCallback (int result, ProjectContentComponent* comp) +static void openIDEMenuCallback (int result, ProjectContentComponent* comp, bool saveFirst) { if (comp != nullptr && result > 0) - comp->openInIDE (result - 1); + comp->openInIDE (result - 1, saveFirst); } -void ProjectContentComponent::openInIDE() +void ProjectContentComponent::openInIDE (bool saveFirst) { if (project != nullptr) { @@ -625,11 +628,11 @@ void ProjectContentComponent::openInIDE() menu.addItem (i + 1, possibleExporters[i]); menu.showMenuAsync (PopupMenu::Options(), - ModalCallbackFunction::forComponent (openIDEMenuCallback, this)); + ModalCallbackFunction::forComponent (openIDEMenuCallback, this, saveFirst)); } else { - openInIDE (0); + openInIDE (0, saveFirst); } } } @@ -911,16 +914,11 @@ bool ProjectContentComponent::perform (const InvocationInfo& info) case CommandIDs::showProjectSettings: showProjectSettings(); break; case CommandIDs::showProjectModules: showModules(); break; - case CommandIDs::openInIDE: openInIDE(); break; + case CommandIDs::openInIDE: openInIDE (false); break; + case CommandIDs::saveAndOpenInIDE: openInIDE (true); break; case CommandIDs::deleteSelectedItem: deleteSelectedTreeItems(); break; - case CommandIDs::saveAndOpenInIDE: - if (saveProject()) - openInIDE(); - - break; - case CommandIDs::showTranslationTool: showTranslationTool(); break; default: diff --git a/extras/Introjucer/Source/Project/jucer_ProjectContentComponent.h b/extras/Introjucer/Source/Project/jucer_ProjectContentComponent.h index 92b206bcb6..93c74b9b61 100644 --- a/extras/Introjucer/Source/Project/jucer_ProjectContentComponent.h +++ b/extras/Introjucer/Source/Project/jucer_ProjectContentComponent.h @@ -70,8 +70,8 @@ public: bool saveProject(); void closeProject(); - void openInIDE(); - void openInIDE (int exporterIndex); + void openInIDE (bool saveFirst); + void openInIDE (int exporterIndex, bool saveFirst); void showFilesTab(); void showConfigTab();