popovermenu: Only close if there's a new focus widget
authorTimm Bäder <mail@baedert.org>
Sun, 6 Oct 2019 10:50:22 +0000 (12:50 +0200)
committerTimm Bäder <mail@baedert.org>
Wed, 9 Oct 2019 14:57:22 +0000 (16:57 +0200)
Makes sense and otherwise we end up closing the popover for no reason

gtk/gtkpopovermenu.c

index fdc053e6e4f62395585f546e0af21f6020d7881e..5249941a78886565f09c137ee4a159b1a1ab94d2 100644 (file)
@@ -215,7 +215,10 @@ focus_out (GtkEventControllerKey *controller,
            GdkNotifyType          detail,
            GtkPopoverMenu        *menu)
 {
-  if (!gtk_event_controller_key_contains_focus (controller))
+  GtkWidget *new_focus = gtk_root_get_focus (gtk_widget_get_root (GTK_WIDGET (menu)));
+
+  if (!gtk_event_controller_key_contains_focus (controller) &&
+      new_focus != NULL)
     {
       if (menu->parent_menu &&
           GTK_POPOVER_MENU (menu->parent_menu)->open_submenu == (GtkWidget*) menu)