diff --git a/extras/Projucer/Source/Application/jucer_MainWindow.cpp b/extras/Projucer/Source/Application/jucer_MainWindow.cpp index d9b2aeab44..956bdcec41 100644 --- a/extras/Projucer/Source/Application/jucer_MainWindow.cpp +++ b/extras/Projucer/Source/Application/jucer_MainWindow.cpp @@ -254,24 +254,18 @@ void MainWindow::moveProject (File newProjectFileToOpen, OpenInIDE openInIDE) void MainWindow::setProject (std::unique_ptr newProject) { - if (newProject == nullptr) - { - getProjectContentComponent()->setProject (nullptr); - projectNameValue.referTo ({}); + currentProject = std::move (newProject); - currentProject.reset(); - } - else - { - currentProject = std::move (newProject); + projectNameValue.referTo (currentProject != nullptr ? currentProject->getProjectValue (Ids::name) : Value()); + if (auto* peer = getPeer()) + peer->setRepresentedFile (currentProject != nullptr ? currentProject->getFile() : File()); + + if (currentProject != nullptr) createProjectContentCompIfNeeded(); - getProjectContentComponent()->setProject (currentProject.get()); - projectNameValue.referTo (currentProject->getProjectValue (Ids::name)); - if (auto* peer = getPeer()) - peer->setRepresentedFile (currentProject->getFile()); - } + if (auto* content = getProjectContentComponent()) + content->setProject (currentProject.get()); ProjucerApplication::getCommandManager().commandStatusChanged(); } diff --git a/extras/Projucer/Source/Project/UI/Sidebar/jucer_LiveBuildTab.h b/extras/Projucer/Source/Project/UI/Sidebar/jucer_LiveBuildTab.h index 1a06f27319..b4c15937c1 100644 --- a/extras/Projucer/Source/Project/UI/Sidebar/jucer_LiveBuildTab.h +++ b/extras/Projucer/Source/Project/UI/Sidebar/jucer_LiveBuildTab.h @@ -217,7 +217,7 @@ private: } if (auto* pcc = findParentComponentOfClass()) - pcc->rebuildProjectTabs(); + pcc->rebuildProjectUI(); } } diff --git a/extras/Projucer/Source/Project/UI/jucer_ProjectContentComponent.cpp b/extras/Projucer/Source/Project/UI/jucer_ProjectContentComponent.cpp index 59728bb158..689e5e78ae 100644 --- a/extras/Projucer/Source/Project/UI/jucer_ProjectContentComponent.cpp +++ b/extras/Projucer/Source/Project/UI/jucer_ProjectContentComponent.cpp @@ -175,10 +175,7 @@ void ProjectContentComponent::setProject (Project* newProject) deleteProjectTabs(); project = newProject; - if (project != nullptr) - rebuildProjectTabs(); - - projectMessagesComponent.setProject (newProject); + rebuildProjectUI(); } } @@ -238,7 +235,7 @@ void ProjectContentComponent::deleteProjectTabs() sidebarTabs.clearTabs(); } -void ProjectContentComponent::rebuildProjectTabs() +void ProjectContentComponent::rebuildProjectUI() { deleteProjectTabs(); @@ -280,13 +277,18 @@ void ProjectContentComponent::rebuildProjectTabs() headerComponent.setVisible (true); headerComponent.setCurrentProject (project); + + projectMessagesComponent.setVisible (true); } else { sidebarTabs.setVisible (false); headerComponent.setVisible (false); + projectMessagesComponent.setVisible (false); } + projectMessagesComponent.setProject (project); + resized(); } @@ -1203,7 +1205,7 @@ void ProjectContentComponent::refreshTabsIfBuildStatusChanged() && isLiveBuildEnabled && (sidebarTabs.getNumTabs() < 2 || isBuildEnabled() != isBuildTabEnabled())) { - rebuildProjectTabs(); + rebuildProjectUI(); } } @@ -1315,7 +1317,7 @@ void ProjectContentComponent::liveBuildEnablementChanged (bool isEnabled) if (! isLiveBuildEnabled) killChildProcess(); - rebuildProjectTabs(); + rebuildProjectUI(); headerComponent.liveBuildEnablementChanged (isLiveBuildEnabled); } diff --git a/extras/Projucer/Source/Project/UI/jucer_ProjectContentComponent.h b/extras/Projucer/Source/Project/UI/jucer_ProjectContentComponent.h index df3abeb5f0..f99b598635 100644 --- a/extras/Projucer/Source/Project/UI/jucer_ProjectContentComponent.h +++ b/extras/Projucer/Source/Project/UI/jucer_ProjectContentComponent.h @@ -94,7 +94,7 @@ public: void updateMissingFileStatuses(); void createProjectTabs(); void deleteProjectTabs(); - void rebuildProjectTabs(); + void rebuildProjectUI(); void refreshTabsIfBuildStatusChanged(); void toggleWarnings(); void showNextError(); diff --git a/extras/Projucer/Source/Project/jucer_Project.cpp b/extras/Projucer/Source/Project/jucer_Project.cpp index 1466f37b7c..0726750d69 100644 --- a/extras/Projucer/Source/Project/jucer_Project.cpp +++ b/extras/Projucer/Source/Project/jucer_Project.cpp @@ -631,9 +631,8 @@ Result Project::loadDocument (const File& file) compileEngineSettings.reset (new CompileEngineSettings (projectRoot)); - exporterPathsModulesList.reset (new AvailableModulesList()); rescanExporterPathModules (! ProjucerApplication::getApp().isRunningCommandLine); - exporterPathsModulesList->addListener (this); + exporterPathsModulesList.addListener (this); setCppVersionFromOldExporterSettings(); updateDeprecatedProjectSettings(); @@ -2313,25 +2312,19 @@ static Array getExporterModulePathsToScan (Project& project) return files; } -AvailableModulesList& Project::getExporterPathsModulesList() -{ - jassert (exporterPathsModulesList != nullptr); - return *exporterPathsModulesList; -} - void Project::rescanExporterPathModules (bool async) { if (async) - exporterPathsModulesList->scanPathsAsync (getExporterModulePathsToScan (*this)); + exporterPathsModulesList.scanPathsAsync (getExporterModulePathsToScan (*this)); else - exporterPathsModulesList->scanPaths (getExporterModulePathsToScan (*this)); + exporterPathsModulesList.scanPaths (getExporterModulePathsToScan (*this)); } AvailableModulesList::ModuleIDAndFolder Project::getModuleWithID (const String& id) { if (! getEnabledModules().shouldUseGlobalPath (id)) { - const auto& mod = exporterPathsModulesList->getModuleWithID (id); + const auto& mod = exporterPathsModulesList.getModuleWithID (id); if (mod.second != File()) return mod; @@ -2344,7 +2337,7 @@ AvailableModulesList::ModuleIDAndFolder Project::getModuleWithID (const String& if (m.first == id) return m; - return exporterPathsModulesList->getModuleWithID (id); + return exporterPathsModulesList.getModuleWithID (id); } //============================================================================== diff --git a/extras/Projucer/Source/Project/jucer_Project.h b/extras/Projucer/Source/Project/jucer_Project.h index 64cdb55576..6d78c4da14 100644 --- a/extras/Projucer/Source/Project/jucer_Project.h +++ b/extras/Projucer/Source/Project/jucer_Project.h @@ -450,7 +450,7 @@ public: //============================================================================== EnabledModulesList& getEnabledModules(); - AvailableModulesList& getExporterPathsModulesList(); + AvailableModulesList& getExporterPathsModulesList() { return exporterPathsModulesList; } void rescanExporterPathModules (bool async = false); std::pair getModuleWithID (const String&); @@ -536,7 +536,8 @@ private: //============================================================================== std::unique_ptr compileEngineSettings; std::unique_ptr enabledModulesList; - std::unique_ptr exporterPathsModulesList; + + AvailableModulesList exporterPathsModulesList; //============================================================================== void updateDeprecatedProjectSettings();