# HG changeset patch # User Olaf Wintermann # Date 1763470181 -3600 # Node ID 28c2a28026ab32d610af807f8fe3d508c0d57b3d # Parent 54150a21abb4b2fbd03be974ba913a95bb0e5ea7 fix crash in listview_save_selection when only one item is selected (Motif) diff -r 54150a21abb4 -r 28c2a28026ab application/demo_bindings.c --- a/application/demo_bindings.c Tue Nov 18 13:40:15 2025 +0100 +++ b/application/demo_bindings.c Tue Nov 18 13:49:41 2025 +0100 @@ -97,7 +97,7 @@ ui_llabel(obj, .varname = "name", .hfill = TRUE, .vfill = TRUE); ui_newline(obj); - ui_combobox(obj, .varname = "doclist", .colspan = 2, .onactivate = switch_document, .getvalue = doclist_get_value, .colspan = 2, .hfill = TRUE); + ui_listview(obj, .height = 200, .varname = "doclist", .colspan = 2, .onactivate = switch_document, .getvalue = doclist_get_value, .colspan = 2, .hfill = TRUE); ui_newline(obj); ui_frame(obj, .label = "Document", .colspan = 2, .fill = TRUE) { @@ -117,6 +117,8 @@ Document *doc = ui_list_get(wdata->doclist, 0); ui_attach_document(obj->ctx, doc); + //ui_list_setselection(wdata->doclist, 0); + ui_show(obj); } diff -r 54150a21abb4 -r 28c2a28026ab ui/motif/list.c --- a/ui/motif/list.c Tue Nov 18 13:40:15 2025 +0100 +++ b/ui/motif/list.c Tue Nov 18 13:49:41 2025 +0100 @@ -28,6 +28,7 @@ #include #include +#include #include "container.h" @@ -144,8 +145,12 @@ UiListSelection sel = { cb->selected_item_count, NULL }; if(sel.count > 0) { sel.rows = calloc(sel.count, sizeof(int)); - for(int i=0;iselected_item_positions[i]-1; + if(sel.count == 1) { + sel.rows[0] = cb->item_position-1; + } else if(cb->selected_item_positions) { + for(int i=0;iselected_item_positions[i]-1; + } } } free(listview->current_selection.rows);