From 62e5d0df2312349c18a55b3f82e4bb47ff80fcf3 Mon Sep 17 00:00:00 2001 From: B0cho Date: Fri, 30 May 2025 18:51:58 +0200 Subject: [PATCH] CORE: Tree context menu upgraded with 'Std_ToggleSkipRecompute' --- src/Gui/Tree.cpp | 11 +++++++++-- src/Gui/Tree.h | 2 ++ 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/Gui/Tree.cpp b/src/Gui/Tree.cpp index 919c2ffaa9..0bb3c931ee 100644 --- a/src/Gui/Tree.cpp +++ b/src/Gui/Tree.cpp @@ -668,6 +668,7 @@ TreeWidget::TreeWidget(const char* name, QWidget* parent) this->skipRecomputeAction->setCheckable(true); connect(this->skipRecomputeAction, &QAction::toggled, this, &TreeWidget::onSkipRecompute); + this->skipRecomputeCommand = Gui::Application::Instance->commandManager().getCommandByName("Std_ToggleSkipRecompute"); this->allowPartialRecomputeAction = new QAction(this); this->allowPartialRecomputeAction->setCheckable(true); @@ -1053,8 +1054,14 @@ void TreeWidget::contextMenuEvent(QContextMenuEvent* e) } } contextMenu.addAction(this->selectDependentsAction); - this->skipRecomputeAction->setChecked(doc->testStatus(App::Document::SkipRecompute)); - contextMenu.addAction(this->skipRecomputeAction); + if (doc == App::GetApplication().getActiveDocument() && this->skipRecomputeCommand != nullptr) { + // if active document is selected, use Command + this->skipRecomputeCommand->addTo(&contextMenu); + } else { + // if other document is selected or Command load fails, edit selected Document directly + this->skipRecomputeAction->setChecked(doc->testStatus(App::Document::SkipRecompute)); + contextMenu.addAction(this->skipRecomputeAction); + } this->allowPartialRecomputeAction->setChecked(doc->testStatus(App::Document::AllowPartialRecompute)); if (doc->testStatus(App::Document::SkipRecompute)) contextMenu.addAction(this->allowPartialRecomputeAction); diff --git a/src/Gui/Tree.h b/src/Gui/Tree.h index 1c0c9dada9..72a048ef62 100644 --- a/src/Gui/Tree.h +++ b/src/Gui/Tree.h @@ -49,6 +49,7 @@ using DocumentObjectDataPtr = std::shared_ptr; class TreeWidgetItemDelegate; class DocumentItem; +class Command; GuiExport bool isTreeViewDragging(); @@ -242,6 +243,7 @@ private: QAction* closeDocAction; QAction* searchObjectsAction; QAction* openFileLocationAction; + Command* skipRecomputeCommand; QTreeWidgetItem *contextItem; App::DocumentObject *searchObject; Gui::Document *searchDoc;