ui/gtk/list.c

changeset 1016
ccde46662db7
parent 1011
18fbc36e1e70
equal deleted inserted replaced
1015:b459361d98ad 1016:ccde46662db7
820 static void listview_update_selection(UiListView *view) { 820 static void listview_update_selection(UiListView *view) {
821 free(view->selection.rows); 821 free(view->selection.rows);
822 view->selection.count = 0; 822 view->selection.count = 0;
823 view->selection.rows = NULL; 823 view->selection.rows = NULL;
824 824
825 CX_ARRAY_DECLARE(int, newselection);
826 cx_array_initialize(newselection, 8);
827
828 size_t nitems = g_list_model_get_n_items(G_LIST_MODEL(view->liststore)); 825 size_t nitems = g_list_model_get_n_items(G_LIST_MODEL(view->liststore));
826 int *newselection = calloc(nitems, sizeof(int));
827 int selection_size = 0;
829 828
830 for(size_t i=0;i<nitems;i++) { 829 for(size_t i=0;i<nitems;i++) {
831 if(gtk_selection_model_is_selected(view->selectionmodel, i)) { 830 if(gtk_selection_model_is_selected(view->selectionmodel, i)) {
832 int s = (int)i; 831 int s = (int)i;
833 cx_array_simple_add(newselection, s); 832 newselection[selection_size++] = s;
834 } 833 }
835 } 834 }
836 835
837 if(newselection_size > 0) { 836 if(selection_size > 0) {
838 view->selection.count = newselection_size; 837 view->selection.count = selection_size;
839 view->selection.rows = newselection; 838 view->selection.rows = newselection;
840 } else { 839 } else {
841 free(newselection); 840 free(newselection);
842 } 841 }
843 } 842 }
2232 sublist->varname, 2231 sublist->varname,
2233 UI_VAR_LIST); 2232 UI_VAR_LIST);
2234 uisublist.numitems = 0; 2233 uisublist.numitems = 0;
2235 uisublist.header = sublist->header ? strdup(sublist->header) : NULL; 2234 uisublist.header = sublist->header ? strdup(sublist->header) : NULL;
2236 uisublist.separator = sublist->separator; 2235 uisublist.separator = sublist->separator;
2237 uisublist.widgets = cxLinkedListCreateSimple(CX_STORE_POINTERS); 2236 uisublist.widgets = cxLinkedListCreate(NULL, CX_STORE_POINTERS);
2238 uisublist.listbox = uilistbox; 2237 uisublist.listbox = uilistbox;
2239 uisublist.userdata = sublist->userdata; 2238 uisublist.userdata = sublist->userdata;
2240 uisublist.index = cxListSize(sublists); 2239 uisublist.index = cxListSize(sublists);
2241 uisublist.startpos = 0; 2240 uisublist.startpos = 0;
2242 cxListAdd(sublists, &uisublist); 2241 cxListAdd(sublists, &uisublist);
2283 uilistbox->getvaluedata = args->getvaluedata; 2282 uilistbox->getvaluedata = args->getvaluedata;
2284 uilistbox->onactivate = args->onactivate; 2283 uilistbox->onactivate = args->onactivate;
2285 uilistbox->onactivatedata = args->onactivatedata; 2284 uilistbox->onactivatedata = args->onactivatedata;
2286 uilistbox->onbuttonclick = args->onbuttonclick; 2285 uilistbox->onbuttonclick = args->onbuttonclick;
2287 uilistbox->onbuttonclickdata = args->onbuttonclickdata; 2286 uilistbox->onbuttonclickdata = args->onbuttonclickdata;
2288 uilistbox->sublists = cxArrayListCreateSimple(sizeof(UiListBoxSubList), 4); 2287 uilistbox->sublists = cxArrayListCreate(NULL, sizeof(UiListBoxSubList), 4);
2289 uilistbox->sublists->collection.advanced_destructor = (cx_destructor_func2)sublist_destroy; 2288 uilistbox->sublists->collection.advanced_destructor = (cx_destructor_func2)sublist_destroy;
2290 uilistbox->sublists->collection.destructor_data = obj; 2289 uilistbox->sublists->collection.destructor_data = obj;
2291 uilistbox->first_row = NULL; 2290 uilistbox->first_row = NULL;
2292 2291
2293 if(args->sublists) { 2292 if(args->sublists) {
2371 } 2370 }
2372 } 2371 }
2373 } 2372 }
2374 2373
2375 cxListFree(uilistbox->sublists); 2374 cxListFree(uilistbox->sublists);
2376 CxList *new_sublists = cxArrayListCreateSimple(sizeof(UiListBoxSubList), list->count(list)); 2375 CxList *new_sublists = cxArrayListCreate(NULL, sizeof(UiListBoxSubList), list->count(list));
2377 uilistbox->sublists = new_sublists; 2376 uilistbox->sublists = new_sublists;
2378 2377
2379 UiSubList *sublist = list->first(list); 2378 UiSubList *sublist = list->first(list);
2380 while(sublist) { 2379 while(sublist) {
2381 add_sublist(uilistbox, new_sublists, sublist); 2380 add_sublist(uilistbox, new_sublists, sublist);

mercurial