diff --git a/extras/Projucer/Source/Project/UI/jucer_HeaderComponent.cpp b/extras/Projucer/Source/Project/UI/jucer_HeaderComponent.cpp index bdf3c633fc..7f732e02ff 100644 --- a/extras/Projucer/Source/Project/UI/jucer_HeaderComponent.cpp +++ b/extras/Projucer/Source/Project/UI/jucer_HeaderComponent.cpp @@ -123,7 +123,8 @@ void HeaderComponent::setCurrentProject (Project* p) noexcept exportersTree.addListener (this); updateExporters(); - project->addChangeListener (this); + projectNameValue.referTo (project->getProjectValue (Ids::name)); + projectNameValue.addListener (this); updateName(); isBuilding = false; @@ -131,14 +132,12 @@ void HeaderComponent::setCurrentProject (Project* p) noexcept repaint(); childProcess = ProjucerApplication::getApp().childProcessCache->getExisting (*project); + if (childProcess != nullptr) { childProcess->activityList.addChangeListener (this); childProcess->errorList.addChangeListener (this); - } - if (childProcess != nullptr) - { runAppButton->setTooltip ({}); runAppButton->setEnabled (true); } @@ -227,14 +226,9 @@ void HeaderComponent::lookAndFeelChanged() userSettingsWindow->sendLookAndFeelChange(); } -void HeaderComponent::changeListenerCallback (ChangeBroadcaster* source) +void HeaderComponent::changeListenerCallback (ChangeBroadcaster*) { - if (source == project) - { - updateName(); - updateExporters(); - } - else if (childProcess != nullptr) + if (childProcess != nullptr) { if (childProcess->activityList.getNumActivities() > 0) buildPing(); @@ -243,6 +237,11 @@ void HeaderComponent::changeListenerCallback (ChangeBroadcaster* source) } } +void HeaderComponent::valueChanged (Value&) +{ + updateName(); +} + void HeaderComponent::timerCallback() { repaint(); diff --git a/extras/Projucer/Source/Project/UI/jucer_HeaderComponent.h b/extras/Projucer/Source/Project/UI/jucer_HeaderComponent.h index 774b935a8d..6aa7ee14a8 100644 --- a/extras/Projucer/Source/Project/UI/jucer_HeaderComponent.h +++ b/extras/Projucer/Source/Project/UI/jucer_HeaderComponent.h @@ -36,6 +36,7 @@ class Project; class HeaderComponent : public Component, private ValueTree::Listener, private ChangeListener, + private Value::Listener, private Timer { public: @@ -65,6 +66,7 @@ private: //========================================================================== void lookAndFeelChanged() override; void changeListenerCallback (ChangeBroadcaster* source) override; + void valueChanged (Value&) override; void timerCallback() override; //========================================================================== @@ -100,6 +102,8 @@ private: Project* project = nullptr; ValueTree exportersTree; + Value projectNameValue; + ComboBox exporterBox; Label configLabel { "Config Label", "Selected exporter" }, projectNameLabel; diff --git a/extras/Projucer/Source/Project/jucer_Project.cpp b/extras/Projucer/Source/Project/jucer_Project.cpp index 51edb19db9..8df7744d23 100644 --- a/extras/Projucer/Source/Project/jucer_Project.cpp +++ b/extras/Projucer/Source/Project/jucer_Project.cpp @@ -714,8 +714,6 @@ void Project::valueTreePropertyChanged (ValueTree& tree, const Identifier& prope { if (property == Ids::projectType) { - sendChangeMessage(); - sendProjectSettingAnalyticsEvent ("Project Type = " + projectTypeValue.get().toString()); } else if (property == Ids::name)