Skip to content

Commit 531b00d

Browse files
committed
Fem: Remove selection observer - fixes FreeCAD#14001
1 parent f5ebafc commit 531b00d

19 files changed

+31
-37
lines changed

src/Mod/Fem/femguiutils/selection_widgets.py

+5
Original file line numberDiff line numberDiff line change
@@ -592,6 +592,11 @@ def has_equal_references_shape_types(self, ref_shty=""):
592592
return False
593593
return True
594594

595+
def finish_selection(self):
596+
self.setback_listobj_visibility()
597+
if self.sel_server:
598+
FreeCADGui.Selection.removeObserver(self.sel_server)
599+
595600

596601
class FemSelectionObserver:
597602
"""selection observer especially for the needs of geometry reference selection of FEM"""

src/Mod/Fem/femtaskpanels/task_constraint_bodyheatsource.py

+2
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,7 @@ def open(self):
100100

101101
def reject(self):
102102
self.restore_visibility()
103+
self.selection_widget.finish_selection()
103104
FreeCADGui.ActiveDocument.resetEdit()
104105
return True
105106

@@ -110,6 +111,7 @@ def accept(self):
110111
self.obj.Mode = self.mode
111112

112113
self.obj.Document.recompute()
114+
self.selection_widget.finish_selection()
113115
FreeCADGui.ActiveDocument.resetEdit()
114116
self.restore_visibility()
115117
return True

src/Mod/Fem/femtaskpanels/task_constraint_centrif.py

+2-7
Original file line numberDiff line numberDiff line change
@@ -155,13 +155,8 @@ def recompute_and_set_back_all(self):
155155
doc = FreeCADGui.getDocument(self.obj.Document)
156156
doc.Document.recompute()
157157

158-
self.AxisSelectionWidget.setback_listobj_visibility()
159-
if self.AxisSelectionWidget.sel_server:
160-
FreeCADGui.Selection.removeObserver(self.AxisSelectionWidget.sel_server)
161-
162-
self.BodySelectionWidget.setback_listobj_visibility()
163-
if self.BodySelectionWidget.sel_server:
164-
FreeCADGui.Selection.removeObserver(self.BodySelectionWidget.sel_server)
158+
self.AxisSelectionWidget.finish_selection()
159+
self.BodySelectionWidget.finish_selection()
165160

166161
doc.resetEdit()
167162

src/Mod/Fem/femtaskpanels/task_constraint_currentdensity.py

+2
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,7 @@ def open(self):
7878

7979
def reject(self):
8080
self._restoreVisibility()
81+
self._selectionWidget.finish_selection()
8182
FreeCADGui.ActiveDocument.resetEdit()
8283
return True
8384

@@ -86,6 +87,7 @@ def accept(self):
8687
self._obj.References = self._selectionWidget.references
8788
self._applyWidgetChanges()
8889
self._obj.Document.recompute()
90+
self._selectionWidget.finish_selection()
8991
FreeCADGui.ActiveDocument.resetEdit()
9092
self._restoreVisibility()
9193
return True

src/Mod/Fem/femtaskpanels/task_constraint_electrostaticpotential.py

+2
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,7 @@ def open(self):
102102

103103
def reject(self):
104104
self._restoreVisibility()
105+
self._selectionWidget.finish_selection()
105106
FreeCADGui.ActiveDocument.resetEdit()
106107
return True
107108

@@ -110,6 +111,7 @@ def accept(self):
110111
self._obj.References = self._selectionWidget.references
111112
self._applyWidgetChanges()
112113
self._obj.Document.recompute()
114+
self._selectionWidget.finish_selection()
113115
FreeCADGui.ActiveDocument.resetEdit()
114116
self._restoreVisibility()
115117
return True

src/Mod/Fem/femtaskpanels/task_constraint_flowvelocity.py

+2
Original file line numberDiff line numberDiff line change
@@ -169,6 +169,7 @@ def open(self):
169169
self._part.ViewObject.show()
170170

171171
def reject(self):
172+
self._selectionWidget.finish_selection()
172173
FreeCADGui.ActiveDocument.resetEdit()
173174
self._restoreVisibility()
174175
return True
@@ -178,6 +179,7 @@ def accept(self):
178179
self._obj.References = self._selectionWidget.references
179180
self._applyWidgetChanges()
180181
self._obj.Document.recompute()
182+
self._selectionWidget.finish_selection()
181183
FreeCADGui.ActiveDocument.resetEdit()
182184
self._restoreVisibility()
183185
return True

src/Mod/Fem/femtaskpanels/task_constraint_initialflowvelocity.py

+2
Original file line numberDiff line numberDiff line change
@@ -168,6 +168,7 @@ def open(self):
168168
self._part.ViewObject.show()
169169

170170
def reject(self):
171+
self._selectionWidget.finish_selection()
171172
FreeCADGui.ActiveDocument.resetEdit()
172173
self._restoreVisibility()
173174
return True
@@ -177,6 +178,7 @@ def accept(self):
177178
self._obj.References = self._selectionWidget.references
178179
self._applyWidgetChanges()
179180
self._obj.Document.recompute()
181+
self._selectionWidget.finish_selection()
180182
FreeCADGui.ActiveDocument.resetEdit()
181183
self._restoreVisibility()
182184
return True

src/Mod/Fem/femtaskpanels/task_constraint_initialpressure.py

+2
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,7 @@ def open(self):
7777

7878
def reject(self):
7979
self._restoreVisibility()
80+
self._selectionWidget.finish_selection()
8081
FreeCADGui.ActiveDocument.resetEdit()
8182
return True
8283

@@ -85,6 +86,7 @@ def accept(self):
8586
self._obj.References = self._selectionWidget.references
8687
self._applyWidgetChanges()
8788
self._obj.Document.recompute()
89+
self._selectionWidget.finish_selection()
8890
FreeCADGui.ActiveDocument.resetEdit()
8991
self._restoreVisibility()
9092
return True

src/Mod/Fem/femtaskpanels/task_constraint_magnetization.py

+2
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,7 @@ def open(self):
7878

7979
def reject(self):
8080
self._restoreVisibility()
81+
self._selectionWidget.finish_selection()
8182
FreeCADGui.ActiveDocument.resetEdit()
8283
return True
8384

@@ -86,6 +87,7 @@ def accept(self):
8687
self._obj.References = self._selectionWidget.references
8788
self._applyWidgetChanges()
8889
self._obj.Document.recompute()
90+
self._selectionWidget.finish_selection()
8991
FreeCADGui.ActiveDocument.resetEdit()
9092
self._restoreVisibility()
9193
return True

src/Mod/Fem/femtaskpanels/task_constraint_sectionprint.py

+1-3
Original file line numberDiff line numberDiff line change
@@ -105,9 +105,7 @@ def reject(self):
105105
def recompute_and_set_back_all(self):
106106
doc = FreeCADGui.getDocument(self.obj.Document)
107107
doc.Document.recompute()
108-
self.selectionWidget.setback_listobj_visibility()
109-
if self.selectionWidget.sel_server:
110-
FreeCADGui.Selection.removeObserver(self.selectionWidget.sel_server)
108+
self.selectionWidget.finish_selection()
111109
doc.resetEdit()
112110

113111
def init_parameter_widget(self):

src/Mod/Fem/femtaskpanels/task_constraint_tie.py

+1-3
Original file line numberDiff line numberDiff line change
@@ -111,9 +111,7 @@ def reject(self):
111111
def recompute_and_set_back_all(self):
112112
doc = FreeCADGui.getDocument(self.obj.Document)
113113
doc.Document.recompute()
114-
self.selectionWidget.setback_listobj_visibility()
115-
if self.selectionWidget.sel_server:
116-
FreeCADGui.Selection.removeObserver(self.selectionWidget.sel_server)
114+
self.selectionWidget.finish_selection()
117115
doc.resetEdit()
118116

119117
def init_parameter_widget(self):

src/Mod/Fem/femtaskpanels/task_element_fluid1D.py

+1-3
Original file line numberDiff line numberDiff line change
@@ -255,9 +255,7 @@ def reject(self):
255255
def recompute_and_set_back_all(self):
256256
doc = FreeCADGui.getDocument(self.obj.Document)
257257
doc.Document.recompute()
258-
self.selectionWidget.setback_listobj_visibility()
259-
if self.selectionWidget.sel_server:
260-
FreeCADGui.Selection.removeObserver(self.selectionWidget.sel_server)
258+
self.selectionWidget.finish_selection()
261259
doc.resetEdit()
262260

263261
def get_fluidsection_props(self):

src/Mod/Fem/femtaskpanels/task_element_geometry1D.py

+1-3
Original file line numberDiff line numberDiff line change
@@ -112,9 +112,7 @@ def reject(self):
112112
def recompute_and_set_back_all(self):
113113
doc = FreeCADGui.getDocument(self.obj.Document)
114114
doc.Document.recompute()
115-
self.selectionWidget.setback_listobj_visibility()
116-
if self.selectionWidget.sel_server:
117-
FreeCADGui.Selection.removeObserver(self.selectionWidget.sel_server)
115+
self.selectionWidget.finish_selection()
118116
doc.resetEdit()
119117

120118
def get_beamsection_props(self):

src/Mod/Fem/femtaskpanels/task_element_geometry2D.py

+1-3
Original file line numberDiff line numberDiff line change
@@ -81,9 +81,7 @@ def reject(self):
8181
def recompute_and_set_back_all(self):
8282
doc = FreeCADGui.getDocument(self.obj.Document)
8383
doc.Document.recompute()
84-
self.selectionWidget.setback_listobj_visibility()
85-
if self.selectionWidget.sel_server:
86-
FreeCADGui.Selection.removeObserver(self.selectionWidget.sel_server)
84+
self.selectionWidget.finish_selection()
8785
doc.resetEdit()
8886

8987
def init_parameter_widget(self):

src/Mod/Fem/femtaskpanels/task_element_rotation1D.py

+1-3
Original file line numberDiff line numberDiff line change
@@ -81,9 +81,7 @@ def reject(self):
8181
def recompute_and_set_back_all(self):
8282
doc = FreeCADGui.getDocument(self.obj.Document)
8383
doc.Document.recompute()
84-
self.selectionWidget.setback_listobj_visibility()
85-
if self.selectionWidget.sel_server:
86-
FreeCADGui.Selection.removeObserver(self.selectionWidget.sel_server)
84+
self.selectionWidget.finish_selection()
8785
doc.resetEdit()
8886

8987
def rotation_changed(self, base_quantity_value):

src/Mod/Fem/femtaskpanels/task_material_common.py

+1-3
Original file line numberDiff line numberDiff line change
@@ -230,9 +230,7 @@ def reject(self):
230230
def recompute_and_set_back_all(self):
231231
doc = FreeCADGui.getDocument(self.obj.Document)
232232
doc.Document.recompute()
233-
self.selectionWidget.setback_listobj_visibility()
234-
if self.selectionWidget.sel_server:
235-
FreeCADGui.Selection.removeObserver(self.selectionWidget.sel_server)
233+
self.selectionWidget.finish_selection()
236234
doc.resetEdit()
237235

238236
def do_not_set_thermal_zeros(self):

src/Mod/Fem/femtaskpanels/task_mesh_boundarylayer.py

+1-3
Original file line numberDiff line numberDiff line change
@@ -93,9 +93,7 @@ def reject(self):
9393
def recompute_and_set_back_all(self):
9494
doc = FreeCADGui.getDocument(self.obj.Document)
9595
doc.Document.recompute()
96-
self.selectionWidget.setback_listobj_visibility()
97-
if self.selectionWidget.sel_server:
98-
FreeCADGui.Selection.removeObserver(self.selectionWidget.sel_server)
96+
self.selectionWidget.finish_selection()
9997
doc.resetEdit()
10098

10199
def init_parameter_widget(self):

src/Mod/Fem/femtaskpanels/task_mesh_group.py

+1-3
Original file line numberDiff line numberDiff line change
@@ -87,9 +87,7 @@ def reject(self):
8787
def recompute_and_set_back_all(self):
8888
doc = FreeCADGui.getDocument(self.obj.Document)
8989
doc.Document.recompute()
90-
self.selectionWidget.setback_listobj_visibility()
91-
if self.selectionWidget.sel_server:
92-
FreeCADGui.Selection.removeObserver(self.selectionWidget.sel_server)
90+
self.selectionWidget.finish_selection()
9391
doc.resetEdit()
9492

9593
def init_parameter_widget(self):

src/Mod/Fem/femtaskpanels/task_mesh_region.py

+1-3
Original file line numberDiff line numberDiff line change
@@ -82,9 +82,7 @@ def reject(self):
8282
def recompute_and_set_back_all(self):
8383
doc = FreeCADGui.getDocument(self.obj.Document)
8484
doc.Document.recompute()
85-
self.selectionWidget.setback_listobj_visibility()
86-
if self.selectionWidget.sel_server:
87-
FreeCADGui.Selection.removeObserver(self.selectionWidget.sel_server)
85+
self.selectionWidget.finish_selection()
8886
doc.resetEdit()
8987

9088
def init_parameter_widget(self):

0 commit comments

Comments
 (0)