| 215 XtFree((char *)items); |
215 XtFree((char *)items); |
| 216 } |
216 } |
| 217 |
217 |
| 218 UiListSelection ui_listview_getselection(UiList *list) { |
218 UiListSelection ui_listview_getselection(UiList *list) { |
| 219 UiListView *listview = list->obj; |
219 UiListView *listview = list->obj; |
| 220 UiListSelection sel = { listview->current_selection.count, NULL }; |
220 UiListSelection sel = { 0, NULL }; |
| 221 if(sel.count > 0) { |
221 int *selpositions = NULL; |
| 222 sel.rows = calloc(sel.count, sizeof(int)); |
222 int numpos = 0; |
| 223 memcpy(sel.rows, listview->current_selection.rows, sel.count*sizeof(int)); |
223 XtVaGetValues(listview->widget, XmNselectedPositions, &selpositions, XmNselectedPositionCount, &numpos, NULL); |
| |
224 if(numpos > 0) { |
| |
225 sel.rows = calloc(numpos, sizeof(int)); |
| |
226 sel.count = numpos; |
| |
227 memcpy(sel.rows, selpositions, numpos*sizeof(int)); |
| |
228 // motif selected positions start at index 1 -> translate positions |
| |
229 for(int i=0;i<numpos;i++) { |
| |
230 sel.rows[i]--; |
| |
231 } |
| 224 } |
232 } |
| 225 return sel; |
233 return sel; |
| 226 } |
234 } |
| 227 |
235 |
| 228 void ui_listview_setselection(UiList *list, UiListSelection selection) { |
236 void ui_listview_setselection(UiList *list, UiListSelection selection) { |