From 9f71b7a8bb4834f8d573a47038734ad06a4f1efc Mon Sep 17 00:00:00 2001 From: Pieter Hijma Date: Fri, 13 Feb 2026 21:54:02 +0100 Subject: [PATCH 1/4] Revert [Core] Remove various DisplayModes from FEM This reverts commit 5915575f191ff624e6b778a7a9db7a4c42a0e356. (cherry picked from commit 7586620d41a6d7821c4ee677b1ac7133756f5081) --- src/Mod/Fem/Gui/ViewProviderAnalysis.cpp | 5 +++++ src/Mod/Fem/Gui/ViewProviderAnalysis.h | 2 ++ src/Mod/Fem/Gui/ViewProviderSolver.cpp | 5 +++++ src/Mod/Fem/Gui/ViewProviderSolver.h | 2 ++ 4 files changed, 14 insertions(+) diff --git a/src/Mod/Fem/Gui/ViewProviderAnalysis.cpp b/src/Mod/Fem/Gui/ViewProviderAnalysis.cpp index 96a85b24b3..0f789559b2 100644 --- a/src/Mod/Fem/Gui/ViewProviderAnalysis.cpp +++ b/src/Mod/Fem/Gui/ViewProviderAnalysis.cpp @@ -148,6 +148,11 @@ std::vector ViewProviderFemAnalysis::claimChildren() const return Gui::ViewProviderDocumentObjectGroup::claimChildren(); } +std::vector ViewProviderFemAnalysis::getDisplayModes() const +{ + return {"Analysis"}; +} + void ViewProviderFemAnalysis::hide() { Gui::ViewProviderDocumentObjectGroup::hide(); diff --git a/src/Mod/Fem/Gui/ViewProviderAnalysis.h b/src/Mod/Fem/Gui/ViewProviderAnalysis.h index 65b30375cb..605e60648d 100644 --- a/src/Mod/Fem/Gui/ViewProviderAnalysis.h +++ b/src/Mod/Fem/Gui/ViewProviderAnalysis.h @@ -77,6 +77,8 @@ public: void setupContextMenu(QMenu*, QObject*, const char*) override; + /// list of all possible display modes + std::vector getDisplayModes() const override; /// shows solid in the tree bool isShow() const override { diff --git a/src/Mod/Fem/Gui/ViewProviderSolver.cpp b/src/Mod/Fem/Gui/ViewProviderSolver.cpp index cdd95e0413..d001dbbd13 100644 --- a/src/Mod/Fem/Gui/ViewProviderSolver.cpp +++ b/src/Mod/Fem/Gui/ViewProviderSolver.cpp @@ -45,6 +45,11 @@ ViewProviderSolver::ViewProviderSolver() ViewProviderSolver::~ViewProviderSolver() = default; +std::vector ViewProviderSolver::getDisplayModes() const +{ + return {"Solver"}; +} + bool ViewProviderSolver::onDelete(const std::vector&) { // warn the user if the object has unselected children diff --git a/src/Mod/Fem/Gui/ViewProviderSolver.h b/src/Mod/Fem/Gui/ViewProviderSolver.h index 8681ac20fd..0027bb2c93 100644 --- a/src/Mod/Fem/Gui/ViewProviderSolver.h +++ b/src/Mod/Fem/Gui/ViewProviderSolver.h @@ -53,6 +53,8 @@ public: { return Visibility.getValue(); } + /// A list of all possible display modes + std::vector getDisplayModes() const override; // handling when object is deleted bool onDelete(const std::vector&) override; From 5e88d52fc5e08cec7392cf2c17c53f0f07f3b87a Mon Sep 17 00:00:00 2001 From: Pieter Hijma Date: Fri, 13 Feb 2026 22:16:03 +0100 Subject: [PATCH 2/4] FEM: Reenable toggling visibility This reenables visibility toggling for Analysis and Solver objects. (cherry picked from commit 1bfaa81d774bde2599243b7872bcbc2653a0c145) --- src/Mod/Fem/Gui/ViewProviderAnalysis.cpp | 1 - src/Mod/Fem/Gui/ViewProviderSolver.cpp | 1 - 2 files changed, 2 deletions(-) diff --git a/src/Mod/Fem/Gui/ViewProviderAnalysis.cpp b/src/Mod/Fem/Gui/ViewProviderAnalysis.cpp index 0f789559b2..4f418a44aa 100644 --- a/src/Mod/Fem/Gui/ViewProviderAnalysis.cpp +++ b/src/Mod/Fem/Gui/ViewProviderAnalysis.cpp @@ -99,7 +99,6 @@ PROPERTY_SOURCE(FemGui::ViewProviderFemAnalysis, Gui::ViewProviderDocumentObject ViewProviderFemAnalysis::ViewProviderFemAnalysis() { - setToggleVisibility(ToggleVisibilityMode::NoToggleVisibility); sPixmap = "FEM_Analysis"; } diff --git a/src/Mod/Fem/Gui/ViewProviderSolver.cpp b/src/Mod/Fem/Gui/ViewProviderSolver.cpp index d001dbbd13..9067321ce8 100644 --- a/src/Mod/Fem/Gui/ViewProviderSolver.cpp +++ b/src/Mod/Fem/Gui/ViewProviderSolver.cpp @@ -39,7 +39,6 @@ PROPERTY_SOURCE(FemGui::ViewProviderSolver, Gui::ViewProviderDocumentObject) ViewProviderSolver::ViewProviderSolver() { - setToggleVisibility(ToggleVisibilityMode::NoToggleVisibility); sPixmap = "FEM_SolverStandard"; } From 347c6087bc726b389b9e78542ef282eeb11b13da Mon Sep 17 00:00:00 2001 From: Pieter Hijma Date: Thu, 19 Feb 2026 16:22:55 +0100 Subject: [PATCH 3/4] Core: Disable toggling visibility text document (cherry picked from commit 03394588694fc403f95b2acbfd077ec60bfc7782) --- src/Gui/ViewProviderTextDocument.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/Gui/ViewProviderTextDocument.cpp b/src/Gui/ViewProviderTextDocument.cpp index 6a35efd2c9..90221699c6 100644 --- a/src/Gui/ViewProviderTextDocument.cpp +++ b/src/Gui/ViewProviderTextDocument.cpp @@ -97,6 +97,8 @@ ViewProviderTextDocument::ViewProviderTextDocument() OnTopWhenSelected.setStatus(App::Property::Hidden, true); SelectionStyle.setStatus(App::Property::Hidden, true); Visibility.setStatus(App::Property::Hidden, true); + + setToggleVisibility(ToggleVisibilityMode::NoToggleVisibility); } void ViewProviderTextDocument::setupContextMenu(QMenu* menu, QObject* receiver, const char* member) From 973d647b44361432c8d0a791705a0cf3dc8fc7db Mon Sep 17 00:00:00 2001 From: Pieter Hijma Date: Thu, 19 Feb 2026 16:23:34 +0100 Subject: [PATCH 4/4] Fem: Improve visibility toggling Result and Solver (cherry picked from commit 94c722d2852b9253fbab3e012e0650b34ac76d70) --- src/Mod/Fem/Gui/ViewProviderResult.h | 2 +- src/Mod/Fem/Gui/ViewProviderSolver.cpp | 1 + .../femviewprovider/view_result_mechanical.py | 16 ++++++++++++++++ 3 files changed, 18 insertions(+), 1 deletion(-) diff --git a/src/Mod/Fem/Gui/ViewProviderResult.h b/src/Mod/Fem/Gui/ViewProviderResult.h index 3868356060..b6e68f159c 100644 --- a/src/Mod/Fem/Gui/ViewProviderResult.h +++ b/src/Mod/Fem/Gui/ViewProviderResult.h @@ -45,7 +45,7 @@ public: // shows solid in the tree bool isShow() const override { - return true; + return Visibility.getValue(); } }; diff --git a/src/Mod/Fem/Gui/ViewProviderSolver.cpp b/src/Mod/Fem/Gui/ViewProviderSolver.cpp index 9067321ce8..d001dbbd13 100644 --- a/src/Mod/Fem/Gui/ViewProviderSolver.cpp +++ b/src/Mod/Fem/Gui/ViewProviderSolver.cpp @@ -39,6 +39,7 @@ PROPERTY_SOURCE(FemGui::ViewProviderSolver, Gui::ViewProviderDocumentObject) ViewProviderSolver::ViewProviderSolver() { + setToggleVisibility(ToggleVisibilityMode::NoToggleVisibility); sPixmap = "FEM_SolverStandard"; } diff --git a/src/Mod/Fem/femviewprovider/view_result_mechanical.py b/src/Mod/Fem/femviewprovider/view_result_mechanical.py index a431ac512b..69586670fa 100644 --- a/src/Mod/Fem/femviewprovider/view_result_mechanical.py +++ b/src/Mod/Fem/femviewprovider/view_result_mechanical.py @@ -87,3 +87,19 @@ class VPResultMechanical(view_base_femconstraint.VPBaseFemConstraint): else: return False return True + + def onChanged(self, vp, prop): + if prop != "Visibility": + return + + for child in self.claimChildren(): + try: + if child is None: + continue + childViewObject = getattr(child, "ViewObject", None) + if childViewObject is None: + continue + + child.ViewObject.Visibility = self.Object.ViewObject.Visibility + except Exception: + pass