mirror of
https://github.com/juce-framework/JUCE.git
synced 2026-02-06 04:00:08 +00:00
Projucer: Fixed a crash when creating new projects without using global paths and hide UI elements correctly when closing projects
This commit is contained in:
parent
faed5b237b
commit
6ce02ad35f
6 changed files with 27 additions and 37 deletions
|
|
@ -254,24 +254,18 @@ void MainWindow::moveProject (File newProjectFileToOpen, OpenInIDE openInIDE)
|
|||
|
||||
void MainWindow::setProject (std::unique_ptr<Project> 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();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -217,7 +217,7 @@ private:
|
|||
}
|
||||
|
||||
if (auto* pcc = findParentComponentOfClass<ProjectContentComponent>())
|
||||
pcc->rebuildProjectTabs();
|
||||
pcc->rebuildProjectUI();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -94,7 +94,7 @@ public:
|
|||
void updateMissingFileStatuses();
|
||||
void createProjectTabs();
|
||||
void deleteProjectTabs();
|
||||
void rebuildProjectTabs();
|
||||
void rebuildProjectUI();
|
||||
void refreshTabsIfBuildStatusChanged();
|
||||
void toggleWarnings();
|
||||
void showNextError();
|
||||
|
|
|
|||
|
|
@ -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<File> 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);
|
||||
}
|
||||
|
||||
//==============================================================================
|
||||
|
|
|
|||
|
|
@ -450,7 +450,7 @@ public:
|
|||
//==============================================================================
|
||||
EnabledModulesList& getEnabledModules();
|
||||
|
||||
AvailableModulesList& getExporterPathsModulesList();
|
||||
AvailableModulesList& getExporterPathsModulesList() { return exporterPathsModulesList; }
|
||||
void rescanExporterPathModules (bool async = false);
|
||||
|
||||
std::pair<String, File> getModuleWithID (const String&);
|
||||
|
|
@ -536,7 +536,8 @@ private:
|
|||
//==============================================================================
|
||||
std::unique_ptr<CompileEngineSettings> compileEngineSettings;
|
||||
std::unique_ptr<EnabledModulesList> enabledModulesList;
|
||||
std::unique_ptr<AvailableModulesList> exporterPathsModulesList;
|
||||
|
||||
AvailableModulesList exporterPathsModulesList;
|
||||
|
||||
//==============================================================================
|
||||
void updateDeprecatedProjectSettings();
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue