From d2986cd99abe0a41b9999361fa2d0e115dcd0ce3 Mon Sep 17 00:00:00 2001 From: Alfredo Monclus Date: Sun, 13 Jul 2025 09:35:53 -0600 Subject: [PATCH] PartDesign: disable final model while selecting on dressups (fillet/chamfer) Co-authored-by: Kacper Donat --- src/Mod/PartDesign/Gui/TaskDressUpParameters.cpp | 13 ++++++++++++- src/Mod/PartDesign/Gui/TaskDressUpParameters.h | 2 ++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/src/Mod/PartDesign/Gui/TaskDressUpParameters.cpp b/src/Mod/PartDesign/Gui/TaskDressUpParameters.cpp index 0dd325517f..e2754199ea 100644 --- a/src/Mod/PartDesign/Gui/TaskDressUpParameters.cpp +++ b/src/Mod/PartDesign/Gui/TaskDressUpParameters.cpp @@ -135,7 +135,7 @@ void TaskDressUpParameters::addAllEdges(QListWidget* widget) if (!base) { return; } - int count = Part::Feature::getTopoShape(base, Part::ShapeOption::ResolveLink + int count = Part::Feature::getTopoShape(base, Part::ShapeOption::ResolveLink | Part::ShapeOption::Transform).countSubShapes(TopAbs_EDGE); auto subValues = pcDressUp->Base.getSubValues(false); std::size_t len = subValues.size(); @@ -398,6 +398,12 @@ void TaskDressUpParameters::setSelectionMode(selectionModes mode) // remove any highlights and selections DressUpView->highlightReferences(false); + + if (previouslyShownViewProvider != nullptr) { + // restore the previously shown view provider + previouslyShownViewProvider->show(); + previouslyShownViewProvider = nullptr; + } } else { AllowSelectionFlags allow; @@ -406,6 +412,11 @@ void TaskDressUpParameters::setSelectionMode(selectionModes mode) Gui::Selection().addSelectionGate(new ReferenceSelection(this->getBase(), allow)); DressUpView->highlightReferences(true); + + // selection must come from the previous feature, we also need to remember the currently + // shown so we can restore it later + previouslyShownViewProvider = DressUpView->getBodyViewProvider()->getShownViewProvider(); + DressUpView->showPreviousFeature(true); } Gui::Selection().clearSelection(); diff --git a/src/Mod/PartDesign/Gui/TaskDressUpParameters.h b/src/Mod/PartDesign/Gui/TaskDressUpParameters.h index 09c687287b..07e67c72c7 100644 --- a/src/Mod/PartDesign/Gui/TaskDressUpParameters.h +++ b/src/Mod/PartDesign/Gui/TaskDressUpParameters.h @@ -105,6 +105,8 @@ protected: private: Gui::WeakPtrT DressUpView; + + Gui::ViewProvider* previouslyShownViewProvider { nullptr }; }; /// simulation dialog for the TaskView