ui/gtk/list.c

changeset 939
fdc6a46100a3
parent 937
06e03c7e39db
child 947
a335a12936ce
equal deleted inserted replaced
938:be4c88ded783 939:fdc6a46100a3
2298 ui_listbox_update(uilistbox, 0, cxListSize(uilistbox->sublists)); 2298 ui_listbox_update(uilistbox, 0, cxListSize(uilistbox->sublists));
2299 } 2299 }
2300 2300
2301 void ui_listbox_dynamic_setselection(UiList *list, UiListSelection sel) { 2301 void ui_listbox_dynamic_setselection(UiList *list, UiListSelection sel) {
2302 UiListBox *uilistbox = list->obj; 2302 UiListBox *uilistbox = list->obj;
2303 gtk_list_box_unselect_all(uilistbox->listbox);
2303 if(sel.count > 0) { 2304 if(sel.count > 0) {
2304 GtkListBoxRow *row = gtk_list_box_get_row_at_index(uilistbox->listbox, sel.rows[0]); 2305 int index = sel.rows[0];
2305 if(row) { 2306 if(index >= 0) {
2306 gtk_list_box_select_row(uilistbox->listbox, row); 2307 GtkListBoxRow *row = gtk_list_box_get_row_at_index(uilistbox->listbox, index);
2307 } 2308 if(row) {
2308 } else { 2309 gtk_list_box_select_row(uilistbox->listbox, row);
2309 gtk_list_box_unselect_all(uilistbox->listbox); 2310 }
2311 }
2310 } 2312 }
2311 } 2313 }
2312 2314
2313 UiListSelection ui_listbox_dynamic_getselection(UiList *list) { 2315 UiListSelection ui_listbox_dynamic_getselection(UiList *list) {
2314 UiListSelection sel = { 0, NULL }; 2316 UiListSelection sel = { 0, NULL };
2688 } 2690 }
2689 2691
2690 void ui_listbox_list_setselection(UiList *list, UiListSelection sel) { 2692 void ui_listbox_list_setselection(UiList *list, UiListSelection sel) {
2691 UiListBoxSubList *sublist = list->obj; 2693 UiListBoxSubList *sublist = list->obj;
2692 UiListBox *uilistbox = sublist->listbox; 2694 UiListBox *uilistbox = sublist->listbox;
2695 gtk_list_box_unselect_all(uilistbox->listbox);
2693 if(sel.count > 0) { 2696 if(sel.count > 0) {
2694 int index = sel.rows[0]; 2697 int index = sel.rows[0];
2695 if(index < sublist->numitems) { 2698 if(index >= 0 && index < sublist->numitems) {
2696 int global_index = sublist->startpos + index; 2699 int global_index = sublist->startpos + index;
2697 GtkListBoxRow *row = gtk_list_box_get_row_at_index(uilistbox->listbox, global_index); 2700 GtkListBoxRow *row = gtk_list_box_get_row_at_index(uilistbox->listbox, global_index);
2698 if(row) { 2701 if(row) {
2699 gtk_list_box_select_row(uilistbox->listbox, row); 2702 gtk_list_box_select_row(uilistbox->listbox, row);
2700 } 2703 }
2701 } 2704 }
2702 } else {
2703 gtk_list_box_unselect_all(uilistbox->listbox);
2704 } 2705 }
2705 } 2706 }
2706 2707
2707 UiListSelection ui_listbox_list_getselection(UiList *list) { 2708 UiListSelection ui_listbox_list_getselection(UiList *list) {
2708 UiListSelection sel = { 0, NULL }; 2709 UiListSelection sel = { 0, NULL };

mercurial