diff options
author | Carlos Garnacho <carlosg@gnome.org> | 2016-05-21 19:43:15 +0200 |
---|---|---|
committer | Carlos Garnacho <carlosg@gnome.org> | 2016-05-21 20:41:54 +0200 |
commit | 3270bdb98102523394a7d4c501f91a0a6ae8936e (patch) | |
tree | f10d67028e87fafffaccdf4e856cd14787671a60 | |
parent | 924c6a679bec13ec94e432405706040de03798c0 (diff) | |
download | gtk+-3270bdb98102523394a7d4c501f91a0a6ae8936e.tar.gz |
popover: set priv->window before setting doing add_popover() on it
If the popover's relative-to widget is unparented/reparented, we end
up unparenting/reparenting the popover as well. In that case, at the
moment of reparenting, the widget might have been visible (and is
thus mapped again), but priv->window hasn't been set yet.
We must first set priv->window, and then call gtk_window_add_popover(),
that way gtk_popover_map() has its prerequisites straight.
https://bugzilla.gnome.org/show_bug.cgi?id=766323
-rw-r--r-- | gtk/gtkpopover.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/gtk/gtkpopover.c b/gtk/gtkpopover.c index e4969979d5..09e8c56a21 100644 --- a/gtk/gtkpopover.c +++ b/gtk/gtkpopover.c @@ -1774,13 +1774,13 @@ _gtk_popover_parent_hierarchy_changed (GtkWidget *widget, if (priv->window) _gtk_window_remove_popover (priv->window, GTK_WIDGET (popover)); - if (new_window) - _gtk_window_add_popover (new_window, GTK_WIDGET (popover), priv->widget, TRUE); - priv->window = new_window; if (new_window) - gtk_popover_update_position (popover); + { + _gtk_window_add_popover (new_window, GTK_WIDGET (popover), priv->widget, TRUE); + gtk_popover_update_position (popover); + } if (gtk_widget_is_visible (GTK_WIDGET (popover))) gtk_widget_queue_resize (GTK_WIDGET (popover)); |