diff --git a/libs/widgets/frame.cc b/libs/widgets/frame.cc index 8068ccb83d..6cd16dfb1f 100644 --- a/libs/widgets/frame.cc +++ b/libs/widgets/frame.cc @@ -64,6 +64,13 @@ Frame::~Frame () } } +void +Frame::child_destroyed (GtkWidget*, gpointer data) +{ + Frame* self = static_cast(data); + self->_w = 0; +} + void Frame::on_add (Widget* w) { @@ -73,6 +80,7 @@ Frame::on_add (Widget* w) Bin::on_add (w); _w = w; + g_signal_connect (w->gobj(), "destroy", G_CALLBACK(child_destroyed), this); queue_resize (); } diff --git a/libs/widgets/widgets/frame.h b/libs/widgets/widgets/frame.h index c349ad6afd..5a1ef00e14 100644 --- a/libs/widgets/widgets/frame.h +++ b/libs/widgets/widgets/frame.h @@ -56,6 +56,8 @@ protected: void on_style_changed (const Glib::RefPtr&); void on_name_changed (); + static void child_destroyed (GtkWidget*, gpointer); + private: Glib::RefPtr get_parent_style ();