| 2344 g_object_set_data(G_OBJECT(button), "ui-button-popup", menu); |
2344 g_object_set_data(G_OBJECT(button), "ui-button-popup", menu); |
| 2345 gtk_popover_popup(GTK_POPOVER(menu)); |
2345 gtk_popover_popup(GTK_POPOVER(menu)); |
| 2346 } |
2346 } |
| 2347 } |
2347 } |
| 2348 |
2348 |
| 2349 #if GTK_CHECK_VERSION(3, 0, 0) |
2349 #if GTK_CHECK_VERSION(4, 0, 0) |
| 2350 static void button_popover_closed(GtkPopover *popover, GtkWidget *button) { |
2350 static void button_popover_closed(GtkPopover *popover, GtkWidget *button) { |
| |
2351 g_object_set_data(G_OBJECT(button), "ui-button-popup", NULL); |
| |
2352 if(g_object_get_data(G_OBJECT(button), "ui-button-invisible")) { |
| |
2353 g_object_set_data(G_OBJECT(button), "ui-button-invisible", NULL); |
| |
2354 gtk_widget_set_visible(button, FALSE); |
| |
2355 } |
| |
2356 } |
| |
2357 #else |
| |
2358 static void popup_hide(GtkWidget *self, GtkWidget *button) { |
| 2351 g_object_set_data(G_OBJECT(button), "ui-button-popup", NULL); |
2359 g_object_set_data(G_OBJECT(button), "ui-button-popup", NULL); |
| 2352 if(g_object_get_data(G_OBJECT(button), "ui-button-invisible")) { |
2360 if(g_object_get_data(G_OBJECT(button), "ui-button-invisible")) { |
| 2353 g_object_set_data(G_OBJECT(button), "ui-button-invisible", NULL); |
2361 g_object_set_data(G_OBJECT(button), "ui-button-invisible", NULL); |
| 2354 gtk_widget_set_visible(button, FALSE); |
2362 gtk_widget_set_visible(button, FALSE); |
| 2355 } |
2363 } |
| 2431 |
2439 |
| 2432 // menu |
2440 // menu |
| 2433 if(item->button_menu) { |
2441 if(item->button_menu) { |
| 2434 UIMENU menu = ui_contextmenu_create(item->button_menu, listbox->obj, button); |
2442 UIMENU menu = ui_contextmenu_create(item->button_menu, listbox->obj, button); |
| 2435 event->customdata3 = menu; |
2443 event->customdata3 = menu; |
| 2436 g_signal_connect(menu, "closed", G_CALLBACK(button_popover_closed), button); |
2444 #if GTK_CHECK_VERSION(4, 0, 0) |
| |
2445 g_signal_connect(menu, "closed", G_CALLBACK(button_popover_closed), button); |
| |
2446 #else |
| |
2447 g_signal_connect(menu, "hide", G_CALLBACK(popup_hide), button); |
| |
2448 #endif |
| 2437 ui_menubuilder_unref(item->button_menu); |
2449 ui_menubuilder_unref(item->button_menu); |
| 2438 } |
2450 } |
| 2439 } |
2451 } |
| 2440 } |
2452 } |
| 2441 |
2453 |