From f82bfd5ddcddfa96359789093190c639ab088e24 Mon Sep 17 00:00:00 2001 From: bgbsww Date: Wed, 18 Sep 2024 15:42:34 -0400 Subject: [PATCH] Move the recompute dialog to after Gui opens instead of per document signal. --- src/Gui/Application.cpp | 6 ++---- src/Gui/Application.h | 5 ++--- src/Mod/Start/Gui/StartView.cpp | 2 ++ 3 files changed, 6 insertions(+), 7 deletions(-) diff --git a/src/Gui/Application.cpp b/src/Gui/Application.cpp index 7c50dee967..97dcce33cc 100644 --- a/src/Gui/Application.cpp +++ b/src/Gui/Application.cpp @@ -378,8 +378,6 @@ Application::Application(bool GUIenabled) std::bind(&Gui::Application::slotRelabelDocument, this, sp::_1)); App::GetApplication().signalShowHidden.connect( std::bind(&Gui::Application::slotShowHidden, this, sp::_1)); - App::GetApplication().signalFinishRestoreDocument.connect( - std::bind(&Gui::Application::slotFinishRestoreDocument, this, sp::_1)); // NOLINTEND // install the last active language ParameterGrp::handle hPGrp = App::GetApplication().GetUserParameter().GetGroup("BaseApp"); @@ -634,6 +632,7 @@ void Application::open(const char* FileName, const char* Module) Command::doCommand(Command::App, "FreeCAD.openDocument('%s')", unicodepath.c_str()); + Gui::Application::checkForRecomputes(); } } else { @@ -979,8 +978,7 @@ void Application::slotShowHidden(const App::Document& Doc) signalShowHidden(*doc->second); } -void Application::slotFinishRestoreDocument([[maybe_unused]] const App::Document& Doc) { - // Quietly gnore the doc parameter and check across all documents. +void Application::checkForRecomputes() { std::vector docs; for (auto doc: App::GetApplication().getDocuments()) { if (doc->testStatus(App::Document::RecomputeOnRestore)) { diff --git a/src/Gui/Application.h b/src/Gui/Application.h index 57171c158f..64d768b054 100644 --- a/src/Gui/Application.h +++ b/src/Gui/Application.h @@ -74,6 +74,8 @@ public: void exportTo(const char* FileName, const char* DocName, const char* Module); /// Reload a partial opened document App::Document *reopen(App::Document *doc); + /// Prompt about recomputing if needed + static void checkForRecomputes(); //@} @@ -131,8 +133,6 @@ public: boost::signals2::signal signalRefreshWorkbenches; /// signal on show hidden items boost::signals2::signal signalShowHidden; - /// signal on document restore complete - boost::signals2::signal signalFinishRestoreDocument; /// signal on activating view boost::signals2::signal signalActivateView; /// signal on entering in edit mode @@ -153,7 +153,6 @@ protected: void slotRenameDocument(const App::Document&); void slotActiveDocument(const App::Document&); void slotShowHidden(const App::Document&); - void slotFinishRestoreDocument(const App::Document&); void slotNewObject(const ViewProvider&); void slotDeletedObject(const ViewProvider&); void slotChangedObject(const ViewProvider&, const App::Property& Prop); diff --git a/src/Mod/Start/Gui/StartView.cpp b/src/Mod/Start/Gui/StartView.cpp index 086cec7c35..9094369eb7 100644 --- a/src/Mod/Start/Gui/StartView.cpp +++ b/src/Mod/Start/Gui/StartView.cpp @@ -360,6 +360,7 @@ void StartView::openExistingFile() const { auto originalDocument = Gui::Application::Instance->activeDocument(); Gui::Application::Instance->commandManager().runCommandByName("Std_Open"); + Gui::Application::checkForRecomputes(); if (Gui::Application::Instance->activeDocument() != originalDocument) { // Only run this if the user chose a new document to open (that is, they didn't cancel the // open file dialog) @@ -436,6 +437,7 @@ void StartView::fileCardSelected(const QModelIndex& index) auto command = std::string("FreeCAD.loadFile('") + escapedstr + "')"; try { Base::Interpreter().runString(command.c_str()); + Gui::Application::checkForRecomputes(); postStart(PostStartBehavior::doNotSwitchWorkbench); } catch (Base::PyException& e) {