--- 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) {