diff options
author | Carlos Garcia Campos <cgarcia@igalia.com> | 2020-06-02 16:35:13 +0200 |
---|---|---|
committer | Carlos Garcia Campos <carlosgc@gnome.org> | 2020-06-02 16:47:56 +0200 |
commit | 2bf9b37e597b2abe977b79d1d9941e09313272f7 (patch) | |
tree | 5a706ca75628bde0b2d1a2054b0b8a28f844930a /gtk/gtkemojichooser.c | |
parent | d2e0ada794417e90e6ea611b98ceb5b39df87632 (diff) | |
download | gtk+-2bf9b37e597b2abe977b79d1d9941e09313272f7.tar.gz |
emojichooser: Unparent the variations popup on dispose and before adding a new one
This was causing warnings when destroying the emoji chooser because it
had children left.
Diffstat (limited to 'gtk/gtkemojichooser.c')
-rw-r--r-- | gtk/gtkemojichooser.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/gtk/gtkemojichooser.c b/gtk/gtkemojichooser.c index 9f704c87f6..1830667195 100644 --- a/gtk/gtkemojichooser.c +++ b/gtk/gtkemojichooser.c @@ -93,6 +93,16 @@ gtk_emoji_chooser_child_init (GtkEmojiChooserChild *child) } static void +gtk_emoji_chooser_child_dispose (GObject *object) +{ + GtkEmojiChooserChild *child = (GtkEmojiChooserChild *)object; + + g_clear_pointer (&child->variations, gtk_widget_unparent); + + G_OBJECT_CLASS (gtk_emoji_chooser_child_parent_class)->dispose (object); +} + +static void gtk_emoji_chooser_child_size_allocate (GtkWidget *widget, int width, int height, @@ -148,7 +158,10 @@ gtk_emoji_chooser_child_popup_menu (GtkWidget *widget, static void gtk_emoji_chooser_child_class_init (GtkEmojiChooserChildClass *class) { + GObjectClass *object_class = G_OBJECT_CLASS (class); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (class); + + object_class->dispose = gtk_emoji_chooser_child_dispose; widget_class->size_allocate = gtk_emoji_chooser_child_size_allocate; widget_class->focus = gtk_emoji_chooser_child_focus; widget_class->grab_focus = gtk_emoji_chooser_child_grab_focus; @@ -436,6 +449,7 @@ show_variations (GtkEmojiChooser *chooser, return; parent_popover = gtk_widget_get_ancestor (child, GTK_TYPE_POPOVER); + g_clear_pointer (&ch->variations, gtk_widget_unparent); popover = ch->variations = gtk_popover_new (); gtk_popover_set_autohide (GTK_POPOVER (popover), TRUE); gtk_widget_set_parent (popover, child); |