Mon, 03 Nov 2025 21:10:39 +0100
implement gtk3 popup hide handler for sourcelist context menus
| ui/gtk/list.c | file | annotate | diff | comparison | revisions |
--- a/ui/gtk/list.c Fri Oct 31 14:47:42 2025 +0100 +++ b/ui/gtk/list.c Mon Nov 03 21:10:39 2025 +0100 @@ -2346,7 +2346,7 @@ } } -#if GTK_CHECK_VERSION(3, 0, 0) +#if GTK_CHECK_VERSION(4, 0, 0) static void button_popover_closed(GtkPopover *popover, GtkWidget *button) { g_object_set_data(G_OBJECT(button), "ui-button-popup", NULL); if(g_object_get_data(G_OBJECT(button), "ui-button-invisible")) { @@ -2354,6 +2354,14 @@ gtk_widget_set_visible(button, FALSE); } } +#else +static void popup_hide(GtkWidget *self, GtkWidget *button) { + g_object_set_data(G_OBJECT(button), "ui-button-popup", NULL); + if(g_object_get_data(G_OBJECT(button), "ui-button-invisible")) { + g_object_set_data(G_OBJECT(button), "ui-button-invisible", NULL); + gtk_widget_set_visible(button, FALSE); + } +} #endif static void listbox_fill_row(UiListBox *listbox, GtkWidget *row, UiListBoxSubList *sublist, UiSubListItem *item, int index) { @@ -2433,7 +2441,11 @@ if(item->button_menu) { UIMENU menu = ui_contextmenu_create(item->button_menu, listbox->obj, button); event->customdata3 = menu; - g_signal_connect(menu, "closed", G_CALLBACK(button_popover_closed), button); +#if GTK_CHECK_VERSION(4, 0, 0) + g_signal_connect(menu, "closed", G_CALLBACK(button_popover_closed), button); +#else + g_signal_connect(menu, "hide", G_CALLBACK(popup_hide), button); +#endif ui_menubuilder_unref(item->button_menu); } }