diff --git a/src/Mod/Start/Gui/PreCompiled.h b/src/Mod/Start/Gui/PreCompiled.h index 0afe415960..a5bd694f50 100644 --- a/src/Mod/Start/Gui/PreCompiled.h +++ b/src/Mod/Start/Gui/PreCompiled.h @@ -57,6 +57,7 @@ #include #include #include +#include #include #include #include diff --git a/src/Mod/Start/Gui/StartView.cpp b/src/Mod/Start/Gui/StartView.cpp index e6d41036b7..923fabf563 100644 --- a/src/Mod/Start/Gui/StartView.cpp +++ b/src/Mod/Start/Gui/StartView.cpp @@ -30,6 +30,7 @@ #include #include #include +#include #include #include #include @@ -291,13 +292,13 @@ void StartView::configureCustomFolderListWidget(QListView* customFolderListWidge } -void StartView::newEmptyFile() const +void StartView::newEmptyFile() { Gui::Application::Instance->commandManager().runCommandByName("Std_New"); postStart(PostStartBehavior::switchWorkbench); } -void StartView::newPartDesignFile() const +void StartView::newPartDesignFile() { Gui::Application::Instance->commandManager().runCommandByName("Std_New"); Gui::Application::Instance->activateWorkbench("PartDesignWorkbench"); @@ -305,7 +306,7 @@ void StartView::newPartDesignFile() const postStart(PostStartBehavior::doNotSwitchWorkbench); } -void StartView::openExistingFile() const +void StartView::openExistingFile() { auto originalDocument = Gui::Application::Instance->activeDocument(); Gui::Application::Instance->commandManager().runCommandByName("Std_Open"); @@ -317,7 +318,7 @@ void StartView::openExistingFile() const } } -void StartView::newAssemblyFile() const +void StartView::newAssemblyFile() { Gui::Application::Instance->commandManager().runCommandByName("Std_New"); Gui::Application::Instance->activateWorkbench("AssemblyWorkbench"); @@ -326,7 +327,7 @@ void StartView::newAssemblyFile() const postStart(PostStartBehavior::doNotSwitchWorkbench); } -void StartView::newDraftFile() const +void StartView::newDraftFile() { Gui::Application::Instance->commandManager().runCommandByName("Std_New"); Gui::Application::Instance->activateWorkbench("DraftWorkbench"); @@ -334,7 +335,7 @@ void StartView::newDraftFile() const postStart(PostStartBehavior::doNotSwitchWorkbench); } -void StartView::newArchFile() const +void StartView::newArchFile() { Gui::Application::Instance->commandManager().runCommandByName("Std_New"); try { @@ -360,7 +361,7 @@ bool StartView::onHasMsg(const char* pMsg) const return MDIView::onHasMsg(pMsg); } -void StartView::postStart(PostStartBehavior behavior) const +void StartView::postStart(PostStartBehavior behavior) { auto hGrp = App::GetApplication().GetParameterGroupByPath( "User parameter:BaseApp/Preferences/Mod/Start"); @@ -376,9 +377,13 @@ void StartView::postStart(PostStartBehavior behavior) const Gui::Application::Instance->activateWorkbench(wb.c_str()); } } - auto closeStart = hGrp->GetBool("closeStart", false); - if (closeStart) { - this->window()->close(); + if (auto closeStart = hGrp->GetBool("closeStart", false)) { + for (QWidget* w = this; w != nullptr; w = w->parentWidget()) { + if (auto mdiSub = qobject_cast(w)) { + mdiSub->close(); + return; + } + } } } diff --git a/src/Mod/Start/Gui/StartView.h b/src/Mod/Start/Gui/StartView.h index 3530a5435b..f550f6700b 100644 --- a/src/Mod/Start/Gui/StartView.h +++ b/src/Mod/Start/Gui/StartView.h @@ -64,12 +64,12 @@ public: return "StartView"; } - void newEmptyFile() const; - void newPartDesignFile() const; - void openExistingFile() const; - void newAssemblyFile() const; - void newDraftFile() const; - void newArchFile() const; + void newEmptyFile(); + void newPartDesignFile(); + void openExistingFile(); + void newAssemblyFile(); + void newDraftFile(); + void newArchFile(); bool onHasMsg(const char* pMsg) const override; @@ -89,7 +89,7 @@ protected: void configureExamplesListWidget(QListView* examplesListWidget); void configureCustomFolderListWidget(QListView* customFolderListWidget); - void postStart(PostStartBehavior behavior) const; + void postStart(PostStartBehavior behavior); void fileCardSelected(const QModelIndex& index); void showOnStartupChanged(bool checked);