From: Paul Davis Date: Mon, 6 Jun 2016 20:05:25 +0000 (-0400) Subject: add a destructor for Gtkmm2ext::Pane that unparents the children. X-Git-Tag: 5.0-pre1~624 X-Git-Url: https://main.carlh.net/gitweb/?p=ardour.git;a=commitdiff_plain;h=5700296cb66c1ebf16903b9baa8883395779a7fd add a destructor for Gtkmm2ext::Pane that unparents the children. This seems to be required, although there is confusion in Gtkmm3 about this. --- diff --git a/libs/gtkmm2ext/gtkmm2ext/pane.h b/libs/gtkmm2ext/gtkmm2ext/pane.h index f1d5bed092..2fa35eb3a5 100644 --- a/libs/gtkmm2ext/gtkmm2ext/pane.h +++ b/libs/gtkmm2ext/gtkmm2ext/pane.h @@ -55,6 +55,8 @@ class LIBGTKMM2EXT_API Pane : public Gtk::Container typedef std::list Children; Pane (bool horizontal); + ~Pane(); + void set_divider (std::vector::size_type divider, float fract); float get_divider (std::vector::size_type divider = 0); void set_child_minsize (Gtk::Widget const &, int32_t); diff --git a/libs/gtkmm2ext/pane.cc b/libs/gtkmm2ext/pane.cc index ce99cc3d97..aa8e7d142b 100644 --- a/libs/gtkmm2ext/pane.cc +++ b/libs/gtkmm2ext/pane.cc @@ -44,6 +44,13 @@ Pane::Pane (bool h) } } +Pane::~Pane () +{ + for (Children::iterator c = children.begin(); c != children.end(); ++c) { + c->w->unparent (); + } +} + void Pane::set_child_minsize (Gtk::Widget const& w, int32_t minsize) { @@ -149,12 +156,11 @@ Pane::on_remove (Widget* w) { for (Children::iterator c = children.begin(); c != children.end(); ++c) { if (c->w == w) { + w->unparent (); children.erase (c); break; } } - - w->unparent (); } void