diff --git a/extras/Introjucer/Source/Application/jucer_Application.h b/extras/Introjucer/Source/Application/jucer_Application.h index 6a97538ab8..aec250ceee 100644 --- a/extras/Introjucer/Source/Application/jucer_Application.h +++ b/extras/Introjucer/Source/Application/jucer_Application.h @@ -229,6 +229,7 @@ public: menu.addCommandItem (commandManager, CommandIDs::closeDocument); menu.addCommandItem (commandManager, CommandIDs::saveDocument); menu.addCommandItem (commandManager, CommandIDs::saveDocumentAs); + menu.addCommandItem (commandManager, CommandIDs::saveAll); menu.addSeparator(); menu.addCommandItem (commandManager, CommandIDs::closeProject); menu.addCommandItem (commandManager, CommandIDs::saveProject); @@ -381,7 +382,7 @@ public: case CommandIDs::saveAll: result.setInfo ("Save All", "Saves all open documents", CommandCategories::general, 0); - result.setActive (openDocumentManager.anyFilesNeedSaving()); + result.defaultKeypresses.add (KeyPress ('s', ModifierKeys::commandModifier | ModifierKeys::altModifier, 0)); break; case CommandIDs::showUTF8Tool: diff --git a/extras/Introjucer/Source/Application/jucer_MainWindow.cpp b/extras/Introjucer/Source/Application/jucer_MainWindow.cpp index d39e5fa811..a1ce41966d 100644 --- a/extras/Introjucer/Source/Application/jucer_MainWindow.cpp +++ b/extras/Introjucer/Source/Application/jucer_MainWindow.cpp @@ -111,7 +111,7 @@ void MainWindow::makeVisible() ProjectContentComponent* MainWindow::getProjectContentComponent() const { - return dynamic_cast (getContentComponent()); + return dynamic_cast (getContentComponent()); } void MainWindow::closeButtonPressed() @@ -235,12 +235,12 @@ void MainWindow::filesDropped (const StringArray& filenames, int /*mouseX*/, int bool MainWindow::shouldDropFilesWhenDraggedExternally (const DragAndDropTarget::SourceDetails& sourceDetails, StringArray& files, bool& canMoveFiles) { - if (TreeView* tv = dynamic_cast (sourceDetails.sourceComponent.get())) + if (TreeView* tv = dynamic_cast (sourceDetails.sourceComponent.get())) { Array selected; for (int i = tv->getNumSelectedItems(); --i >= 0;) - if (JucerTreeViewBase* b = dynamic_cast (tv->getSelectedItem(i))) + if (JucerTreeViewBase* b = dynamic_cast (tv->getSelectedItem(i))) selected.add (b); if (selected.size() > 0) @@ -444,7 +444,7 @@ MainWindow* MainWindowList::getOrCreateFrontmostWindow() for (int i = Desktop::getInstance().getNumComponents(); --i >= 0;) { - MainWindow* mw = dynamic_cast (Desktop::getInstance().getComponent (i)); + MainWindow* mw = dynamic_cast (Desktop::getInstance().getComponent (i)); if (windows.contains (mw)) return mw; } @@ -459,7 +459,7 @@ MainWindow* MainWindowList::getOrCreateEmptyWindow() for (int i = Desktop::getInstance().getNumComponents(); --i >= 0;) { - MainWindow* mw = dynamic_cast (Desktop::getInstance().getComponent (i)); + MainWindow* mw = dynamic_cast (Desktop::getInstance().getComponent (i)); if (windows.contains (mw) && mw->getProject() == nullptr) return mw; } @@ -467,6 +467,13 @@ MainWindow* MainWindowList::getOrCreateEmptyWindow() return createNewMainWindow(); } +void MainWindowList::updateAllWindowTitles() +{ + for (int i = 0; i < windows.size(); ++i) + if (ProjectContentComponent* pc = windows.getUnchecked(i)->getProjectContentComponent()) + pc->updateMainWindowTitle(); +} + void MainWindowList::avoidSuperimposedWindows (MainWindow* const mw) { for (int i = windows.size(); --i >= 0;) @@ -499,7 +506,7 @@ void MainWindowList::saveCurrentlyOpenProjectList() Desktop& desktop = Desktop::getInstance(); for (int i = 0; i < desktop.getNumComponents(); ++i) { - if (MainWindow* const mw = dynamic_cast (desktop.getComponent(i))) + if (MainWindow* const mw = dynamic_cast (desktop.getComponent(i))) if (Project* p = mw->getProject()) projects.add (p->getFile()); } @@ -526,7 +533,7 @@ Project* MainWindowList::getFrontmostProject() Desktop& desktop = Desktop::getInstance(); for (int i = desktop.getNumComponents(); --i >= 0;) - if (MainWindow* const mw = dynamic_cast (desktop.getComponent(i))) + if (MainWindow* const mw = dynamic_cast (desktop.getComponent(i))) if (Project* p = mw->getProject()) return p; diff --git a/extras/Introjucer/Source/Application/jucer_MainWindow.h b/extras/Introjucer/Source/Application/jucer_MainWindow.h index e9e553f407..ec43bc5686 100644 --- a/extras/Introjucer/Source/Application/jucer_MainWindow.h +++ b/extras/Introjucer/Source/Application/jucer_MainWindow.h @@ -107,6 +107,8 @@ public: void reopenLastProjects(); void saveCurrentlyOpenProjectList(); + void updateAllWindowTitles(); + void avoidSuperimposedWindows (MainWindow*); void sendLookAndFeelChange(); diff --git a/extras/Introjucer/Source/Application/jucer_OpenDocumentManager.cpp b/extras/Introjucer/Source/Application/jucer_OpenDocumentManager.cpp index 63610a7593..c86badb016 100644 --- a/extras/Introjucer/Source/Application/jucer_OpenDocumentManager.cpp +++ b/extras/Introjucer/Source/Application/jucer_OpenDocumentManager.cpp @@ -257,9 +257,14 @@ bool OpenDocumentManager::anyFilesNeedSaving() const bool OpenDocumentManager::saveAll() { for (int i = documents.size(); --i >= 0;) + { if (! documents.getUnchecked (i)->save()) return false; + IntrojucerApp::getApp().mainWindowList.updateAllWindowTitles(); + IntrojucerApp::getCommandManager().commandStatusChanged(); + } + return true; }