summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenjamin Otte <otte@redhat.com>2016-05-10 00:59:19 +0200
committerMatthias Clasen <mclasen@redhat.com>2016-05-19 12:10:07 -0400
commitdcb4b48b29559ca632bb020a3b8eb2b9188b02e7 (patch)
tree1951e6a2f4a044fa0df695848f9332762456a6b6
parente7e55d13a4cdb636c01ed8b13f28f92f19e42aae (diff)
downloadgtk+-dcb4b48b29559ca632bb020a3b8eb2b9188b02e7.tar.gz
scrolledwindow: Remove child before destroying self
Children tend to call back into the scrolled window while being removed and that doesn't work too well if the scrolled window is destroyed already as Christian Hergert found out.
-rw-r--r--gtk/gtkscrolledwindow.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/gtk/gtkscrolledwindow.c b/gtk/gtkscrolledwindow.c
index 8a98490771..bba19ed8e0 100644
--- a/gtk/gtkscrolledwindow.c
+++ b/gtk/gtkscrolledwindow.c
@@ -2672,6 +2672,11 @@ gtk_scrolled_window_destroy (GtkWidget *widget)
{
GtkScrolledWindow *scrolled_window = GTK_SCROLLED_WINDOW (widget);
GtkScrolledWindowPrivate *priv = scrolled_window->priv;
+ GtkWidget *child;
+
+ child = gtk_bin_get_child (GTK_BIN (widget));
+ if (child)
+ gtk_container_remove (GTK_CONTAINER (widget), child);
remove_indicator (scrolled_window, &priv->hindicator);
remove_indicator (scrolled_window, &priv->vindicator);