summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2023-04-07 20:24:24 +0000
committerMatthias Clasen <mclasen@redhat.com>2023-04-07 20:24:24 +0000
commit99251c0c8fd98ba7ffb36999a374327b67f27fc3 (patch)
treeda560953983e0a08c4f8e104932f6d03c2363e0f
parentda5433e14085ce20fcecd3c5d47b11d08de718fb (diff)
parent17095387567028c6d14b469ab0af642af8909ab2 (diff)
downloadgtk+-99251c0c8fd98ba7ffb36999a374327b67f27fc3.tar.gz
Merge branch 'wip/carlosg/popover-ungrab-on-unmap' into 'main'
gtkpopover: Move GTK grabs to map/unmap Closes #5730 See merge request GNOME/gtk!5801
-rw-r--r--gtk/gtkpopover.c14
1 files changed, 6 insertions, 8 deletions
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);