diff --git a/src/Gui/Application.cpp b/src/Gui/Application.cpp index 982215d144..049cfcb396 100644 --- a/src/Gui/Application.cpp +++ b/src/Gui/Application.cpp @@ -958,6 +958,9 @@ void Application::setActiveDocument(Gui::Document* pcDocument) { if (d->activeDocument == pcDocument) return; // nothing needs to be done + + getMainWindow()->updateActions(); + if (pcDocument) { // This happens if a document with more than one view is about being // closed and a second view is activated. The document is still not diff --git a/src/Gui/Document.cpp b/src/Gui/Document.cpp index a72397b53f..9e749027c9 100644 --- a/src/Gui/Document.cpp +++ b/src/Gui/Document.cpp @@ -772,6 +772,8 @@ void Document::slotChangedObject(const App::DocumentObject& Obj, const App::Prop FC_LOG(Prop.getFullName() << " modified"); setModified(true); } + + getMainWindow()->updateActions(true); } void Document::slotRelabelObject(const App::DocumentObject& Obj) diff --git a/src/Gui/MainWindow.cpp b/src/Gui/MainWindow.cpp index 0d7ce10859..d4f67e5bee 100644 --- a/src/Gui/MainWindow.cpp +++ b/src/Gui/MainWindow.cpp @@ -1001,7 +1001,6 @@ void MainWindow::setActiveWindow(MDIView* view) onSetActiveSubWindow(view->parentWidget()); d->activeView = view; Application::Instance->viewActivated(view); - updateActions(); } void MainWindow::onWindowActivated(QMdiSubWindow* w) @@ -1025,7 +1024,6 @@ void MainWindow::onWindowActivated(QMdiSubWindow* w) // set active the appropriate window (it needs not to be part of mdiIds, e.g. directly after creation) d->activeView = view; Application::Instance->viewActivated(view); - updateActions(); } void MainWindow::onWindowsMenuAboutToShow() diff --git a/src/Gui/TaskView/TaskView.cpp b/src/Gui/TaskView/TaskView.cpp index 94f5363b65..09c00650e6 100644 --- a/src/Gui/TaskView/TaskView.cpp +++ b/src/Gui/TaskView/TaskView.cpp @@ -44,6 +44,7 @@ #include #include #include +#include #if defined (QSINT_ACTIONPANEL) #include @@ -613,10 +614,14 @@ void TaskView::showDialog(TaskDialog *dlg) ActiveDialog = dlg; ActiveDialog->open(); + + getMainWindow()->updateActions(); } void TaskView::removeDialog(void) { + getMainWindow()->updateActions(); + if (ActiveCtrl) { taskPanel->removeWidget(ActiveCtrl); delete ActiveCtrl;