| 2025 return; |
2025 return; |
| 2026 } |
2026 } |
| 2027 |
2027 |
| 2028 size_t index = 0; |
2028 size_t index = 0; |
| 2029 void *elm = list->first(list); |
2029 void *elm = list->first(list); |
| |
2030 |
| |
2031 if(!elm && sublist->header) { |
| |
2032 // empty row for header |
| |
2033 GtkWidget *row = gtk_list_box_row_new(); |
| |
2034 cxListAdd(sublist->widgets, row); |
| |
2035 g_object_set_data(G_OBJECT(row), "ui_listbox", listbox); |
| |
2036 g_object_set_data(G_OBJECT(row), "ui_listbox_sublist", sublist); |
| |
2037 intptr_t rowindex = listbox_insert_index + index; |
| |
2038 g_object_set_data(G_OBJECT(row), "ui_listbox_row_index", (gpointer)rowindex); |
| |
2039 gtk_list_box_insert(listbox->listbox, row, listbox_insert_index + index); |
| |
2040 sublist->numitems = 1; |
| |
2041 return; |
| |
2042 } |
| |
2043 |
| 2030 while(elm) { |
2044 while(elm) { |
| 2031 UiSubListItem item = { NULL, NULL, NULL, NULL, NULL, NULL }; |
2045 UiSubListItem item = { NULL, NULL, NULL, NULL, NULL, NULL }; |
| 2032 if(listbox->getvalue) { |
2046 if(listbox->getvalue) { |
| 2033 listbox->getvalue(list, sublist->userdata, elm, index, &item, listbox->getvaluedata); |
2047 listbox->getvalue(list, sublist->userdata, elm, index, &item, listbox->getvaluedata); |
| 2034 } else { |
2048 } else { |
| 2069 } |
2083 } |
| 2070 |
2084 |
| 2071 void ui_listbox_list_update(UiList *list, int i) { |
2085 void ui_listbox_list_update(UiList *list, int i) { |
| 2072 UiListBoxSubList *sublist = list->obj; |
2086 UiListBoxSubList *sublist = list->obj; |
| 2073 ui_listbox_update_sublist(sublist->listbox, sublist, sublist->startpos); |
2087 ui_listbox_update_sublist(sublist->listbox, sublist, sublist->startpos); |
| |
2088 size_t pos = 0; |
| |
2089 CxIterator it = cxListIterator(sublist->listbox->sublists); |
| |
2090 cx_foreach(UiListBoxSubList *, ls, it) { |
| |
2091 ls->startpos = pos; |
| |
2092 pos += sublist->numitems; |
| |
2093 } |
| |
2094 |
| 2074 } |
2095 } |
| 2075 |
2096 |
| 2076 void ui_listbox_row_activate(GtkListBox *self, GtkListBoxRow *row, gpointer user_data) { |
2097 void ui_listbox_row_activate(GtkListBox *self, GtkListBoxRow *row, gpointer user_data) { |
| 2077 UiEventDataExt *data = g_object_get_data(G_OBJECT(row), "ui-listbox-row-eventdata"); |
2098 UiEventDataExt *data = g_object_get_data(G_OBJECT(row), "ui-listbox-row-eventdata"); |
| 2078 if(!data) { |
2099 if(!data) { |