Thu, 27 Nov 2025 19:48:30 +0100
improve listbox setselection functions (GTK)
| ui/gtk/list.c | file | annotate | diff | comparison | revisions |
--- a/ui/gtk/list.c Thu Nov 27 15:15:09 2025 +0100 +++ b/ui/gtk/list.c Thu Nov 27 19:48:30 2025 +0100 @@ -2300,13 +2300,15 @@ void ui_listbox_dynamic_setselection(UiList *list, UiListSelection sel) { UiListBox *uilistbox = list->obj; + gtk_list_box_unselect_all(uilistbox->listbox); if(sel.count > 0) { - GtkListBoxRow *row = gtk_list_box_get_row_at_index(uilistbox->listbox, sel.rows[0]); - if(row) { - gtk_list_box_select_row(uilistbox->listbox, row); + int index = sel.rows[0]; + if(index >= 0) { + GtkListBoxRow *row = gtk_list_box_get_row_at_index(uilistbox->listbox, index); + if(row) { + gtk_list_box_select_row(uilistbox->listbox, row); + } } - } else { - gtk_list_box_unselect_all(uilistbox->listbox); } } @@ -2690,17 +2692,16 @@ void ui_listbox_list_setselection(UiList *list, UiListSelection sel) { UiListBoxSubList *sublist = list->obj; UiListBox *uilistbox = sublist->listbox; + gtk_list_box_unselect_all(uilistbox->listbox); if(sel.count > 0) { int index = sel.rows[0]; - if(index < sublist->numitems) { + if(index >= 0 && index < sublist->numitems) { int global_index = sublist->startpos + index; GtkListBoxRow *row = gtk_list_box_get_row_at_index(uilistbox->listbox, global_index); if(row) { gtk_list_box_select_row(uilistbox->listbox, row); } } - } else { - gtk_list_box_unselect_all(uilistbox->listbox); } }