Skip to content

Commit 6d6c596

Browse files
Use RemoveAllWidgets in RemovedFromManager for robust cleanup
Replace individual RemoveWidget calls with RemoveAllWidgets(false, false) in generated RemovedFromManager to ensure all child widgets are properly removed from the container's mWidgets list. This works together with the existing RemoveAllWidgets in the destructor to prevent WidgetContainer assertion failure (mWidgets must be empty in destructor).
1 parent 1261a66 commit 6d6c596

1 file changed

Lines changed: 1 addition & 6 deletions

File tree

core/code_generator.py

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -376,12 +376,7 @@ def generate_cpp_for_interface(self, iface: Interface, project: Project) -> str:
376376
cpp += "}\n\n"
377377

378378
cpp += f"void {s.class_name}::RemovedFromManager(WidgetManager* theWidgetManager)\n{{\n"
379-
for wid_id in iface.root_widget_ids:
380-
wid = iface.widgets.get(wid_id)
381-
if wid:
382-
var_name = self._get_var_name(wid)
383-
if self._is_widget_type(wid.class_name):
384-
cpp += f" RemoveWidget({var_name});\n"
379+
cpp += " RemoveAllWidgets(false, false);\n"
385380
cpp += f" {base_class_call}::RemovedFromManager(theWidgetManager);\n}}\n\n"
386381

387382
for listener in listeners:

0 commit comments

Comments
 (0)