ui/common/object.c

changeset 886
6f5e02fcb7b9
parent 870
e167cf006213
child 932
28fc967f74ef
--- a/ui/common/object.c	Thu Oct 30 21:29:18 2025 +0100
+++ b/ui/common/object.c	Fri Oct 31 10:12:27 2025 +0100
@@ -144,4 +144,29 @@
     } else {
         toplevel->container_begin = NULL;
     }
+    
+    // TODO: free container?
 }
+
+/*
+ * This might look like a weird function, but in case a container creates a
+ * sub-container, 2 container objects are added to the list, however we want
+ * only one container, otherwise ui_container_finish() would not work
+ */
+void uic_object_remove_second_last_container(UiObject *toplevel) {
+    if(toplevel->container_end && toplevel->container_end->prev) {
+        UiContainerX *end = toplevel->container_end;
+        UiContainerX *rm = toplevel->container_end->prev;
+        
+        end->prev = rm->prev;
+        if(rm->prev) {
+            rm->prev->next = end;
+        } else {
+            toplevel->container_begin = end;
+        }
+        
+        // TODO: free container?
+    } else {
+        fprintf(stderr, "Error: uic_object_remove_second_last_container expected at least 2 containers\n");
+    }
+}

mercurial