From 03ab236b67cb86b223112fc6ffcef3bb33cc993a Mon Sep 17 00:00:00 2001 From: deepend Date: Fri, 23 Jan 2026 07:58:26 -0700 Subject: [PATCH] Anchored GTK3 menu popups to the parent window when no pointer event is available, while preserving the GTK2 popup path. --- src/fe-gtk/menu.c | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/fe-gtk/menu.c b/src/fe-gtk/menu.c index 21863766..253fe2b8 100644 --- a/src/fe-gtk/menu.c +++ b/src/fe-gtk/menu.c @@ -581,7 +581,21 @@ menu_popup (GtkWidget *menu, GdkEventButton *event, gpointer objtounref) g_signal_connect (G_OBJECT (menu), "selection-done", G_CALLBACK (menu_destroy), objtounref); #if HAVE_GTK3 - gtk_menu_popup_at_pointer (GTK_MENU (menu), (GdkEvent *)event); + if (event) + { + gtk_menu_popup_at_pointer (GTK_MENU (menu), (GdkEvent *)event); + } + else if (parent_window) + { + gtk_menu_popup_at_widget (GTK_MENU (menu), GTK_WIDGET (parent_window), + GDK_GRAVITY_SOUTH_WEST, + GDK_GRAVITY_NORTH_WEST, + NULL); + } + else + { + gtk_menu_popup_at_pointer (GTK_MENU (menu), NULL); + } #endif #if !HAVE_GTK3 gtk_menu_popup (GTK_MENU (menu), NULL, NULL, NULL, NULL,