diff --git a/extras/Projucer/Source/ComponentEditor/jucer_JucerDocument.cpp b/extras/Projucer/Source/ComponentEditor/jucer_JucerDocument.cpp index c91444e93e..5540ad09ea 100644 --- a/extras/Projucer/Source/ComponentEditor/jucer_JucerDocument.cpp +++ b/extras/Projucer/Source/ComponentEditor/jucer_JucerDocument.cpp @@ -221,15 +221,6 @@ void JucerDocument::setInitialSize (int w, int h) } } -void JucerDocument::setLastSelectedTabIndex (int index) -{ - if (index != lastTab) - { - lastTab = index; - flushChangesToDocuments (nullptr); - } -} - //============================================================================== bool JucerDocument::isSnapActive (const bool disableIfCtrlKeyDown) const noexcept { @@ -359,7 +350,6 @@ XmlElement* JucerDocument::createXml() const doc->setAttribute ("fixedSize", fixedSize); doc->setAttribute ("initialWidth", initialWidth); doc->setAttribute ("initialHeight", initialHeight); - doc->setAttribute ("lastSelectedTab", lastTab); if (activeExtraMethods.size() > 0) { @@ -392,7 +382,6 @@ bool JucerDocument::loadFromXml (const XmlElement& xml) fixedSize = xml.getBoolAttribute ("fixedSize", false); initialWidth = xml.getIntAttribute ("initialWidth", 300); initialHeight = xml.getIntAttribute ("initialHeight", 200); - lastTab = xml.getIntAttribute ("lastSelectedTab", 1); snapGridPixels = xml.getIntAttribute ("snapPixels", snapGridPixels); snapActive = xml.getBoolAttribute ("snapActive", snapActive); diff --git a/extras/Projucer/Source/ComponentEditor/jucer_JucerDocument.h b/extras/Projucer/Source/ComponentEditor/jucer_JucerDocument.h index e060d55939..f69269adc9 100644 --- a/extras/Projucer/Source/ComponentEditor/jucer_JucerDocument.h +++ b/extras/Projucer/Source/ComponentEditor/jucer_JucerDocument.h @@ -93,9 +93,6 @@ public: int getInitialWidth() const noexcept { return initialWidth; } int getInitialHeight() const noexcept { return initialHeight; } - void setLastSelectedTabIndex (int index); - int getLastSelectedTabIndex() const noexcept { return lastTab; } - //============================================================================== virtual int getNumPaintRoutines() const = 0; virtual StringArray getPaintRoutineNames() const = 0; @@ -150,7 +147,6 @@ protected: bool fixedSize = false; int initialWidth = 600, initialHeight = 400; - int lastTab = 1; BinaryResources resources; diff --git a/extras/Projucer/Source/ComponentEditor/ui/jucer_JucerDocumentEditor.cpp b/extras/Projucer/Source/ComponentEditor/ui/jucer_JucerDocumentEditor.cpp index 30efe2da13..025b0540ab 100644 --- a/extras/Projucer/Source/ComponentEditor/ui/jucer_JucerDocumentEditor.cpp +++ b/extras/Projucer/Source/ComponentEditor/ui/jucer_JucerDocumentEditor.cpp @@ -347,8 +347,7 @@ JucerDocumentEditor::JucerDocumentEditor (JucerDocument* const doc) document->getCppDocument()), true); updateTabs(); - - tabbedComponent.setCurrentTabIndex (document->getLastSelectedTabIndex()); + restoreLastSelectedTab(); document->addChangeListener (this); @@ -361,9 +360,7 @@ JucerDocumentEditor::JucerDocumentEditor (JucerDocument* const doc) JucerDocumentEditor::~JucerDocumentEditor() { - if (document != nullptr) - document->setLastSelectedTabIndex (tabbedComponent.getCurrentTabIndex()); - + saveLastSelectedTab(); tabbedComponent.clearTabs(); } @@ -597,6 +594,53 @@ void JucerDocumentEditor::addComponent (const int index) document->beginTransaction(); } } +//============================================================================== +void JucerDocumentEditor::saveLastSelectedTab() const +{ + if (document != nullptr) + { + auto* project = document->getCppDocument().getProject(); + if (project != nullptr) + { + auto& properties = project->getStoredProperties(); + + ScopedPointer root (properties.getXmlValue ("GUIComponentsLastTab")); + + if (root == nullptr) + root = new XmlElement ("FILES"); + + auto fileName = document->getCppFile().getFileName(); + + auto* child = root->getChildByName (fileName); + + if (child == nullptr) + child = root->createNewChildElement (fileName); + + child->setAttribute ("tab", tabbedComponent.getCurrentTabIndex()); + + properties.setValue ("GUIComponentsLastTab", root); + } + } +} + +void JucerDocumentEditor::restoreLastSelectedTab() +{ + if (document != nullptr) + { + auto* project = document->getCppDocument().getProject(); + if (project != nullptr) + { + ScopedPointer root (project->getStoredProperties().getXmlValue ("GUIComponentsLastTab")); + if (root != nullptr) + { + auto* child = root->getChildByName (document->getCppFile().getFileName()); + + if (child != nullptr) + tabbedComponent.setCurrentTabIndex (child->getIntAttribute ("tab")); + } + } + } +} //============================================================================== bool JucerDocumentEditor::isSomethingSelected() const diff --git a/extras/Projucer/Source/ComponentEditor/ui/jucer_JucerDocumentEditor.h b/extras/Projucer/Source/ComponentEditor/ui/jucer_JucerDocumentEditor.h index 3756637588..ee7f205c6a 100644 --- a/extras/Projucer/Source/ComponentEditor/ui/jucer_JucerDocumentEditor.h +++ b/extras/Projucer/Source/ComponentEditor/ui/jucer_JucerDocumentEditor.h @@ -88,6 +88,9 @@ private: int lastViewportX = 0, lastViewportY = 0; double currentZoomLevel = 1.0; + void saveLastSelectedTab() const; + void restoreLastSelectedTab(); + bool isSomethingSelected() const; bool areMultipleThingsSelected() const;