diff --git a/src/Mod/Fem/femguiutils/selection_widgets.py b/src/Mod/Fem/femguiutils/selection_widgets.py index 265fc1b34a..1a6a3cd341 100644 --- a/src/Mod/Fem/femguiutils/selection_widgets.py +++ b/src/Mod/Fem/femguiutils/selection_widgets.py @@ -592,6 +592,11 @@ class GeometryElementsSelection(QtGui.QWidget): return False return True + def finish_selection(self): + self.setback_listobj_visibility() + if self.sel_server: + FreeCADGui.Selection.removeObserver(self.sel_server) + class FemSelectionObserver: """selection observer especially for the needs of geometry reference selection of FEM""" diff --git a/src/Mod/Fem/femtaskpanels/task_constraint_bodyheatsource.py b/src/Mod/Fem/femtaskpanels/task_constraint_bodyheatsource.py index 2893073b40..b740b7ebd7 100644 --- a/src/Mod/Fem/femtaskpanels/task_constraint_bodyheatsource.py +++ b/src/Mod/Fem/femtaskpanels/task_constraint_bodyheatsource.py @@ -100,6 +100,7 @@ class _TaskPanel(object): def reject(self): self.restore_visibility() + self.selection_widget.finish_selection() FreeCADGui.ActiveDocument.resetEdit() return True @@ -110,6 +111,7 @@ class _TaskPanel(object): self.obj.Mode = self.mode self.obj.Document.recompute() + self.selection_widget.finish_selection() FreeCADGui.ActiveDocument.resetEdit() self.restore_visibility() return True diff --git a/src/Mod/Fem/femtaskpanels/task_constraint_centrif.py b/src/Mod/Fem/femtaskpanels/task_constraint_centrif.py index eab1ea7e10..31833351a8 100644 --- a/src/Mod/Fem/femtaskpanels/task_constraint_centrif.py +++ b/src/Mod/Fem/femtaskpanels/task_constraint_centrif.py @@ -155,13 +155,8 @@ class _TaskPanel: doc = FreeCADGui.getDocument(self.obj.Document) doc.Document.recompute() - self.AxisSelectionWidget.setback_listobj_visibility() - if self.AxisSelectionWidget.sel_server: - FreeCADGui.Selection.removeObserver(self.AxisSelectionWidget.sel_server) - - self.BodySelectionWidget.setback_listobj_visibility() - if self.BodySelectionWidget.sel_server: - FreeCADGui.Selection.removeObserver(self.BodySelectionWidget.sel_server) + self.AxisSelectionWidget.finish_selection() + self.BodySelectionWidget.finish_selection() doc.resetEdit() diff --git a/src/Mod/Fem/femtaskpanels/task_constraint_currentdensity.py b/src/Mod/Fem/femtaskpanels/task_constraint_currentdensity.py index 59c8adf554..8faeee420d 100644 --- a/src/Mod/Fem/femtaskpanels/task_constraint_currentdensity.py +++ b/src/Mod/Fem/femtaskpanels/task_constraint_currentdensity.py @@ -78,6 +78,7 @@ class _TaskPanel(object): def reject(self): self._restoreVisibility() + self._selectionWidget.finish_selection() FreeCADGui.ActiveDocument.resetEdit() return True @@ -86,6 +87,7 @@ class _TaskPanel(object): self._obj.References = self._selectionWidget.references self._applyWidgetChanges() self._obj.Document.recompute() + self._selectionWidget.finish_selection() FreeCADGui.ActiveDocument.resetEdit() self._restoreVisibility() return True diff --git a/src/Mod/Fem/femtaskpanels/task_constraint_electrostaticpotential.py b/src/Mod/Fem/femtaskpanels/task_constraint_electrostaticpotential.py index 8dde745b1c..7ff248653f 100644 --- a/src/Mod/Fem/femtaskpanels/task_constraint_electrostaticpotential.py +++ b/src/Mod/Fem/femtaskpanels/task_constraint_electrostaticpotential.py @@ -102,6 +102,7 @@ class _TaskPanel(object): def reject(self): self._restoreVisibility() + self._selectionWidget.finish_selection() FreeCADGui.ActiveDocument.resetEdit() return True @@ -110,6 +111,7 @@ class _TaskPanel(object): self._obj.References = self._selectionWidget.references self._applyWidgetChanges() self._obj.Document.recompute() + self._selectionWidget.finish_selection() FreeCADGui.ActiveDocument.resetEdit() self._restoreVisibility() return True diff --git a/src/Mod/Fem/femtaskpanels/task_constraint_flowvelocity.py b/src/Mod/Fem/femtaskpanels/task_constraint_flowvelocity.py index 0415b4cfa3..4e0a634a5e 100644 --- a/src/Mod/Fem/femtaskpanels/task_constraint_flowvelocity.py +++ b/src/Mod/Fem/femtaskpanels/task_constraint_flowvelocity.py @@ -169,6 +169,7 @@ class _TaskPanel(object): self._part.ViewObject.show() def reject(self): + self._selectionWidget.finish_selection() FreeCADGui.ActiveDocument.resetEdit() self._restoreVisibility() return True @@ -178,6 +179,7 @@ class _TaskPanel(object): self._obj.References = self._selectionWidget.references self._applyWidgetChanges() self._obj.Document.recompute() + self._selectionWidget.finish_selection() FreeCADGui.ActiveDocument.resetEdit() self._restoreVisibility() return True diff --git a/src/Mod/Fem/femtaskpanels/task_constraint_initialflowvelocity.py b/src/Mod/Fem/femtaskpanels/task_constraint_initialflowvelocity.py index 71638d274b..6516c70823 100644 --- a/src/Mod/Fem/femtaskpanels/task_constraint_initialflowvelocity.py +++ b/src/Mod/Fem/femtaskpanels/task_constraint_initialflowvelocity.py @@ -168,6 +168,7 @@ class _TaskPanel(object): self._part.ViewObject.show() def reject(self): + self._selectionWidget.finish_selection() FreeCADGui.ActiveDocument.resetEdit() self._restoreVisibility() return True @@ -177,6 +178,7 @@ class _TaskPanel(object): self._obj.References = self._selectionWidget.references self._applyWidgetChanges() self._obj.Document.recompute() + self._selectionWidget.finish_selection() FreeCADGui.ActiveDocument.resetEdit() self._restoreVisibility() return True diff --git a/src/Mod/Fem/femtaskpanels/task_constraint_initialpressure.py b/src/Mod/Fem/femtaskpanels/task_constraint_initialpressure.py index 524b67e2e4..be32559a3e 100644 --- a/src/Mod/Fem/femtaskpanels/task_constraint_initialpressure.py +++ b/src/Mod/Fem/femtaskpanels/task_constraint_initialpressure.py @@ -77,6 +77,7 @@ class _TaskPanel(object): def reject(self): self._restoreVisibility() + self._selectionWidget.finish_selection() FreeCADGui.ActiveDocument.resetEdit() return True @@ -85,6 +86,7 @@ class _TaskPanel(object): self._obj.References = self._selectionWidget.references self._applyWidgetChanges() self._obj.Document.recompute() + self._selectionWidget.finish_selection() FreeCADGui.ActiveDocument.resetEdit() self._restoreVisibility() return True diff --git a/src/Mod/Fem/femtaskpanels/task_constraint_magnetization.py b/src/Mod/Fem/femtaskpanels/task_constraint_magnetization.py index d94163475c..f666a662ad 100644 --- a/src/Mod/Fem/femtaskpanels/task_constraint_magnetization.py +++ b/src/Mod/Fem/femtaskpanels/task_constraint_magnetization.py @@ -78,6 +78,7 @@ class _TaskPanel(object): def reject(self): self._restoreVisibility() + self._selectionWidget.finish_selection() FreeCADGui.ActiveDocument.resetEdit() return True @@ -86,6 +87,7 @@ class _TaskPanel(object): self._obj.References = self._selectionWidget.references self._applyWidgetChanges() self._obj.Document.recompute() + self._selectionWidget.finish_selection() FreeCADGui.ActiveDocument.resetEdit() self._restoreVisibility() return True diff --git a/src/Mod/Fem/femtaskpanels/task_constraint_sectionprint.py b/src/Mod/Fem/femtaskpanels/task_constraint_sectionprint.py index b9ff745306..df285630de 100644 --- a/src/Mod/Fem/femtaskpanels/task_constraint_sectionprint.py +++ b/src/Mod/Fem/femtaskpanels/task_constraint_sectionprint.py @@ -105,9 +105,7 @@ class _TaskPanel: def recompute_and_set_back_all(self): doc = FreeCADGui.getDocument(self.obj.Document) doc.Document.recompute() - self.selectionWidget.setback_listobj_visibility() - if self.selectionWidget.sel_server: - FreeCADGui.Selection.removeObserver(self.selectionWidget.sel_server) + self.selectionWidget.finish_selection() doc.resetEdit() def init_parameter_widget(self): diff --git a/src/Mod/Fem/femtaskpanels/task_constraint_tie.py b/src/Mod/Fem/femtaskpanels/task_constraint_tie.py index aa5a644297..4cab0dfa68 100644 --- a/src/Mod/Fem/femtaskpanels/task_constraint_tie.py +++ b/src/Mod/Fem/femtaskpanels/task_constraint_tie.py @@ -111,9 +111,7 @@ class _TaskPanel: def recompute_and_set_back_all(self): doc = FreeCADGui.getDocument(self.obj.Document) doc.Document.recompute() - self.selectionWidget.setback_listobj_visibility() - if self.selectionWidget.sel_server: - FreeCADGui.Selection.removeObserver(self.selectionWidget.sel_server) + self.selectionWidget.finish_selection() doc.resetEdit() def init_parameter_widget(self): diff --git a/src/Mod/Fem/femtaskpanels/task_element_fluid1D.py b/src/Mod/Fem/femtaskpanels/task_element_fluid1D.py index 2044b58ddf..4a60ae1d50 100644 --- a/src/Mod/Fem/femtaskpanels/task_element_fluid1D.py +++ b/src/Mod/Fem/femtaskpanels/task_element_fluid1D.py @@ -255,9 +255,7 @@ class _TaskPanel: def recompute_and_set_back_all(self): doc = FreeCADGui.getDocument(self.obj.Document) doc.Document.recompute() - self.selectionWidget.setback_listobj_visibility() - if self.selectionWidget.sel_server: - FreeCADGui.Selection.removeObserver(self.selectionWidget.sel_server) + self.selectionWidget.finish_selection() doc.resetEdit() def get_fluidsection_props(self): diff --git a/src/Mod/Fem/femtaskpanels/task_element_geometry1D.py b/src/Mod/Fem/femtaskpanels/task_element_geometry1D.py index 5104ac4498..5461098e5c 100644 --- a/src/Mod/Fem/femtaskpanels/task_element_geometry1D.py +++ b/src/Mod/Fem/femtaskpanels/task_element_geometry1D.py @@ -112,9 +112,7 @@ class _TaskPanel: def recompute_and_set_back_all(self): doc = FreeCADGui.getDocument(self.obj.Document) doc.Document.recompute() - self.selectionWidget.setback_listobj_visibility() - if self.selectionWidget.sel_server: - FreeCADGui.Selection.removeObserver(self.selectionWidget.sel_server) + self.selectionWidget.finish_selection() doc.resetEdit() def get_beamsection_props(self): diff --git a/src/Mod/Fem/femtaskpanels/task_element_geometry2D.py b/src/Mod/Fem/femtaskpanels/task_element_geometry2D.py index c5b4645f6a..4d4365b6b7 100644 --- a/src/Mod/Fem/femtaskpanels/task_element_geometry2D.py +++ b/src/Mod/Fem/femtaskpanels/task_element_geometry2D.py @@ -81,9 +81,7 @@ class _TaskPanel: def recompute_and_set_back_all(self): doc = FreeCADGui.getDocument(self.obj.Document) doc.Document.recompute() - self.selectionWidget.setback_listobj_visibility() - if self.selectionWidget.sel_server: - FreeCADGui.Selection.removeObserver(self.selectionWidget.sel_server) + self.selectionWidget.finish_selection() doc.resetEdit() def init_parameter_widget(self): diff --git a/src/Mod/Fem/femtaskpanels/task_element_rotation1D.py b/src/Mod/Fem/femtaskpanels/task_element_rotation1D.py index 451debc0cd..1bf66d8d50 100644 --- a/src/Mod/Fem/femtaskpanels/task_element_rotation1D.py +++ b/src/Mod/Fem/femtaskpanels/task_element_rotation1D.py @@ -81,9 +81,7 @@ class _TaskPanel: def recompute_and_set_back_all(self): doc = FreeCADGui.getDocument(self.obj.Document) doc.Document.recompute() - self.selectionWidget.setback_listobj_visibility() - if self.selectionWidget.sel_server: - FreeCADGui.Selection.removeObserver(self.selectionWidget.sel_server) + self.selectionWidget.finish_selection() doc.resetEdit() def rotation_changed(self, base_quantity_value): diff --git a/src/Mod/Fem/femtaskpanels/task_material_common.py b/src/Mod/Fem/femtaskpanels/task_material_common.py index ecc0e02224..b88ceca6cc 100644 --- a/src/Mod/Fem/femtaskpanels/task_material_common.py +++ b/src/Mod/Fem/femtaskpanels/task_material_common.py @@ -230,9 +230,7 @@ class _TaskPanel: def recompute_and_set_back_all(self): doc = FreeCADGui.getDocument(self.obj.Document) doc.Document.recompute() - self.selectionWidget.setback_listobj_visibility() - if self.selectionWidget.sel_server: - FreeCADGui.Selection.removeObserver(self.selectionWidget.sel_server) + self.selectionWidget.finish_selection() doc.resetEdit() def do_not_set_thermal_zeros(self): diff --git a/src/Mod/Fem/femtaskpanels/task_mesh_boundarylayer.py b/src/Mod/Fem/femtaskpanels/task_mesh_boundarylayer.py index 8d190d3243..f545d610fc 100644 --- a/src/Mod/Fem/femtaskpanels/task_mesh_boundarylayer.py +++ b/src/Mod/Fem/femtaskpanels/task_mesh_boundarylayer.py @@ -93,9 +93,7 @@ class _TaskPanel: def recompute_and_set_back_all(self): doc = FreeCADGui.getDocument(self.obj.Document) doc.Document.recompute() - self.selectionWidget.setback_listobj_visibility() - if self.selectionWidget.sel_server: - FreeCADGui.Selection.removeObserver(self.selectionWidget.sel_server) + self.selectionWidget.finish_selection() doc.resetEdit() def init_parameter_widget(self): diff --git a/src/Mod/Fem/femtaskpanels/task_mesh_group.py b/src/Mod/Fem/femtaskpanels/task_mesh_group.py index 7fb9b5b43f..c369d57e40 100644 --- a/src/Mod/Fem/femtaskpanels/task_mesh_group.py +++ b/src/Mod/Fem/femtaskpanels/task_mesh_group.py @@ -87,9 +87,7 @@ class _TaskPanel: def recompute_and_set_back_all(self): doc = FreeCADGui.getDocument(self.obj.Document) doc.Document.recompute() - self.selectionWidget.setback_listobj_visibility() - if self.selectionWidget.sel_server: - FreeCADGui.Selection.removeObserver(self.selectionWidget.sel_server) + self.selectionWidget.finish_selection() doc.resetEdit() def init_parameter_widget(self): diff --git a/src/Mod/Fem/femtaskpanels/task_mesh_region.py b/src/Mod/Fem/femtaskpanels/task_mesh_region.py index d18f2dc311..553fbbac32 100644 --- a/src/Mod/Fem/femtaskpanels/task_mesh_region.py +++ b/src/Mod/Fem/femtaskpanels/task_mesh_region.py @@ -82,9 +82,7 @@ class _TaskPanel: def recompute_and_set_back_all(self): doc = FreeCADGui.getDocument(self.obj.Document) doc.Document.recompute() - self.selectionWidget.setback_listobj_visibility() - if self.selectionWidget.sel_server: - FreeCADGui.Selection.removeObserver(self.selectionWidget.sel_server) + self.selectionWidget.finish_selection() doc.resetEdit() def init_parameter_widget(self):