diff --git a/gtk/gtkpopover.c b/gtk/gtkpopover.c index cf90a3bd7d..90d7df6ffb 100644 --- a/gtk/gtkpopover.c +++ b/gtk/gtkpopover.c @@ -1087,20 +1087,12 @@ gtk_popover_show (GtkWidget *widget) { if (!gtk_widget_get_focus_child (widget)) gtk_widget_child_focus (widget, GTK_DIR_TAB_FORWARD); - - gtk_grab_add (widget); } } static void gtk_popover_hide (GtkWidget *widget) { - GtkPopover *popover = GTK_POPOVER (widget); - GtkPopoverPrivate *priv = gtk_popover_get_instance_private (popover); - - if (priv->autohide) - gtk_grab_remove (widget); - gtk_popover_set_mnemonics_visible (GTK_POPOVER (widget), FALSE); _gtk_widget_set_visible_flag (widget, FALSE); gtk_widget_unmap (widget); @@ -1147,6 +1139,9 @@ gtk_popover_map (GtkWidget *widget) unset_surface_transform_changed_cb); GTK_WIDGET_CLASS (gtk_popover_parent_class)->map (widget); + + if (priv->autohide) + gtk_grab_add (widget); } static void @@ -1156,6 +1151,9 @@ gtk_popover_unmap (GtkWidget *widget) GtkPopoverPrivate *priv = gtk_popover_get_instance_private (popover); GtkWidget *parent; + if (priv->autohide) + gtk_grab_remove (widget); + parent = gtk_widget_get_parent (widget); gtk_widget_remove_surface_transform_changed_callback (parent, priv->surface_transform_changed_cb);