add sourcelist update callback

Sat, 18 Oct 2025 10:17:59 +0200

author
Olaf Wintermann <olaf.wintermann@gmail.com>
date
Sat, 18 Oct 2025 10:17:59 +0200
changeset 861
34b07b18b3e1
parent 860
7f2287ae2b78
child 862
670b2c03413f

add sourcelist update callback

ui/gtk/list.c file | annotate | diff | comparison | revisions
ui/ui/tree.h file | annotate | diff | comparison | revisions
--- a/ui/gtk/list.c	Sat Oct 18 09:43:05 2025 +0200
+++ b/ui/gtk/list.c	Sat Oct 18 10:17:59 2025 +0200
@@ -2063,6 +2063,18 @@
 
 /* ------------------------------ Source List ------------------------------ */
 
+static ui_sourcelist_update_func sourcelist_update_finished_callback;
+
+void ui_sourcelist_set_update_callback(ui_sourcelist_update_func cb) {
+    sourcelist_update_finished_callback = cb;
+}
+
+static void ui_sourcelist_update_finished(void) {
+    if(sourcelist_update_finished_callback) {
+        sourcelist_update_finished_callback();
+    }
+}
+
 static void ui_destroy_sourcelist(GtkWidget *w, UiListBox *v) {
     cxListFree(v->sublists);
     free(v);
@@ -2299,6 +2311,8 @@
         ui_listbox_update_sublist(listbox, sublist, pos);
         pos += sublist->numitems;
     }
+    
+    ui_sourcelist_update_finished();
 }
 
 static void listbox_button_clicked(GtkWidget *button, UiEventDataExt *data) {
@@ -2623,6 +2637,8 @@
     } else {
         update_sublist_item(sublist->listbox, sublist, i);
     }
+    
+    ui_sourcelist_update_finished();
 }
 
 void ui_listbox_row_activate(GtkListBox *self, GtkListBoxRow *row, gpointer user_data) {
--- a/ui/ui/tree.h	Sat Oct 18 09:43:05 2025 +0200
+++ b/ui/ui/tree.h	Sat Oct 18 10:17:59 2025 +0200
@@ -319,6 +319,18 @@
 UIEXPORT void ui_sublist_item_set_eventdata(UiSubListItem *item, void *eventdata);
 
 
+
+/*
+ * Only relevant for some language bindings
+ */
+typedef void(*ui_sourcelist_update_func)(void);
+
+/*
+ * The sourcelist update callback is called after any source list
+ * sublist update is completed
+ */
+UIEXPORT void ui_sourcelist_set_update_callback(ui_sourcelist_update_func cb);
+
 #ifdef	__cplusplus
 }
 #endif

mercurial