Sat, 13 Dec 2025 13:19:29 +0100
add listview/dropdown selection functions (Motif)
| ui/motif/list.c | file | annotate | diff | comparison | revisions | |
| ui/motif/list.h | file | annotate | diff | comparison | revisions |
--- a/ui/motif/list.c Sat Dec 13 12:52:38 2025 +0100 +++ b/ui/motif/list.c Sat Dec 13 13:19:29 2025 +0100 @@ -137,17 +137,29 @@ XtAddCallback( widget, XmNextendedSelectionCallback, - (XtCallbackProc)ui_listview_selection, + (XtCallbackProc)ui_listview_selection_changed, listview); XtAddCallback( widget, XmNsingleSelectionCallback, - (XtCallbackProc)ui_listview_selection, + (XtCallbackProc)ui_listview_selection_changed, listview); return widget; } +void ui_listview_select(UIWIDGET listview, int index) { + XmListDeselectAllItems(listview); + XmListSelectPos(listview, index+1, False); +} + +int ui_listview_selection(UIWIDGET listview) { + int *selpositions = NULL; + int numpos = 0; + XtVaGetValues(listview, XmNselectedPositions, &selpositions, XmNselectedPositionCount, &numpos, NULL); + return numpos > 0 ? selpositions[0] : -1; +} + void ui_listview_destroy(Widget w, UiListView *listview, XtPointer d) { ui_listselection_free(listview->current_selection); if(listview->model) { @@ -191,7 +203,7 @@ } } -void ui_listview_selection(Widget w, UiListView *listview, XmListCallbackStruct *cb) { +void ui_listview_selection_changed(Widget w, UiListView *listview, XmListCallbackStruct *cb) { listview_save_selection(listview, cb); if(listview->onselection) { list_callback(listview->obj, listview->current_selection, listview->onselection, listview->onselectiondata); @@ -273,7 +285,7 @@ /* ------------------------------- Drop Down ------------------------------- */ -static void ui_dropdown_selection( +static void ui_dropdown_selection_changed( Widget w, UiListView *listview, XmComboBoxCallbackStruct *cb) @@ -371,7 +383,7 @@ XtAddCallback( widget, XmNselectionCallback, - (XtCallbackProc)ui_dropdown_selection, + (XtCallbackProc)ui_dropdown_selection_changed, listview); return widget; @@ -398,3 +410,12 @@ } return sel; } + +void ui_dropdown_select(UIWIDGET dropdown, int index) { + XtVaSetValues(dropdown, XmNselectedPosition, index, NULL); +} + +int ui_dropdown_selection(UIWIDGET dropdown) { + int pos = -1; + XtVaGetValues(dropdown, XmNselectedPosition, &pos, NULL); +}
--- a/ui/motif/list.h Sat Dec 13 12:52:38 2025 +0100 +++ b/ui/motif/list.h Sat Dec 13 13:19:29 2025 +0100 @@ -63,7 +63,7 @@ void ui_listview_destroy(Widget w, UiListView *listview, XtPointer d); void ui_listview_activate(Widget w, UiListView *listview, XmListCallbackStruct *cb); -void ui_listview_selection(Widget w, UiListView *listview, XmListCallbackStruct *cb); +void ui_listview_selection_changed(Widget w, UiListView *listview, XmListCallbackStruct *cb); void ui_listview_update(UiList *list, int i); UiListSelection ui_listview_getselection(UiList *list);