ui/gtk/list.c

changeset 113
dde28a806552
parent 112
c3f2f16fa4b8
equal deleted inserted replaced
112:c3f2f16fa4b8 113:dde28a806552
2316 } 2316 }
2317 2317
2318 static void listbox_button_clicked(GtkWidget *button, UiEventDataExt *data) { 2318 static void listbox_button_clicked(GtkWidget *button, UiEventDataExt *data) {
2319 UiListBoxSubList *sublist = data->customdata0; 2319 UiListBoxSubList *sublist = data->customdata0;
2320 2320
2321 UiSubListEventData eventdata; 2321 UiSubListEventData *eventdata = &sublist->listbox->current_eventdata;
2322 eventdata.list = sublist->var->value; 2322 eventdata->list = sublist->var->value;
2323 eventdata.sublist_index = sublist->index; 2323 eventdata->sublist_index = sublist->index;
2324 eventdata.row_index = data->value0; 2324 eventdata->row_index = data->value0;
2325 eventdata.sublist_userdata = sublist->userdata; 2325 eventdata->sublist_userdata = sublist->userdata;
2326 eventdata.row_data = eventdata.list->get(eventdata.list, eventdata.row_index); 2326 eventdata->row_data = eventdata->list->get(eventdata->list, eventdata->row_index);
2327 eventdata.event_data = data->customdata2; 2327 eventdata->event_data = data->customdata2;
2328 2328
2329 UiEvent event; 2329 UiEvent event;
2330 event.obj = data->obj; 2330 event.obj = data->obj;
2331 event.window = event.obj->window; 2331 event.window = event.obj->window;
2332 event.document = event.obj->ctx->document; 2332 event.document = event.obj->ctx->document;
2333 event.eventdata = &eventdata; 2333 event.eventdata = eventdata;
2334 event.eventdatatype = UI_EVENT_DATA_SUBLIST; 2334 event.eventdatatype = UI_EVENT_DATA_SUBLIST;
2335 event.intval = data->value0; 2335 event.intval = data->value0;
2336 event.set = ui_get_setop(); 2336 event.set = ui_get_setop();
2337 2337
2338 if(data->callback2) { 2338 if(data->callback2) {
2339 data->callback2(&event, data->userdata2); 2339 data->callback2(&event, data->userdata2);
2340 } 2340 }
2341 2341
2342 if(data->customdata3) { 2342 if(data->customdata3) {
2343 uic_set_tmp_eventdata(eventdata, UI_EVENT_DATA_SUBLIST);
2344
2343 UIMENU menu = data->customdata3; 2345 UIMENU menu = data->customdata3;
2344 g_object_set_data(G_OBJECT(button), "ui-button-popup", menu); 2346 g_object_set_data(G_OBJECT(button), "ui-button-popup", menu);
2345 gtk_popover_popup(GTK_POPOVER(menu)); 2347 gtk_popover_popup(GTK_POPOVER(menu));
2346 } 2348 }
2347 } 2349 }
2348 2350
2349 #if GTK_CHECK_VERSION(3, 0, 0) 2351 #if GTK_CHECK_VERSION(4, 0, 0)
2350 static void button_popover_closed(GtkPopover *popover, GtkWidget *button) { 2352 static void button_popover_closed(GtkPopover *popover, GtkWidget *button) {
2353 g_object_set_data(G_OBJECT(button), "ui-button-popup", NULL);
2354 if(g_object_get_data(G_OBJECT(button), "ui-button-invisible")) {
2355 g_object_set_data(G_OBJECT(button), "ui-button-invisible", NULL);
2356 gtk_widget_set_visible(button, FALSE);
2357 }
2358 }
2359 #else
2360 static void popup_hide(GtkWidget *self, GtkWidget *button) {
2351 g_object_set_data(G_OBJECT(button), "ui-button-popup", NULL); 2361 g_object_set_data(G_OBJECT(button), "ui-button-popup", NULL);
2352 if(g_object_get_data(G_OBJECT(button), "ui-button-invisible")) { 2362 if(g_object_get_data(G_OBJECT(button), "ui-button-invisible")) {
2353 g_object_set_data(G_OBJECT(button), "ui-button-invisible", NULL); 2363 g_object_set_data(G_OBJECT(button), "ui-button-invisible", NULL);
2354 gtk_widget_set_visible(button, FALSE); 2364 gtk_widget_set_visible(button, FALSE);
2355 } 2365 }
2431 2441
2432 // menu 2442 // menu
2433 if(item->button_menu) { 2443 if(item->button_menu) {
2434 UIMENU menu = ui_contextmenu_create(item->button_menu, listbox->obj, button); 2444 UIMENU menu = ui_contextmenu_create(item->button_menu, listbox->obj, button);
2435 event->customdata3 = menu; 2445 event->customdata3 = menu;
2436 g_signal_connect(menu, "closed", G_CALLBACK(button_popover_closed), button); 2446 #if GTK_CHECK_VERSION(4, 0, 0)
2447 g_signal_connect(menu, "closed", G_CALLBACK(button_popover_closed), button);
2448 #else
2449 g_signal_connect(menu, "hide", G_CALLBACK(popup_hide), button);
2450 #endif
2437 ui_menubuilder_unref(item->button_menu); 2451 ui_menubuilder_unref(item->button_menu);
2438 } 2452 }
2439 } 2453 }
2440 } 2454 }
2441 2455

mercurial