diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2016-06-06 16:05:25 -0400 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2016-06-06 16:05:25 -0400 |
commit | 5700296cb66c1ebf16903b9baa8883395779a7fd (patch) | |
tree | fdbb6b8101df562fb505975f0cfc986cc51981ea /libs | |
parent | 084da26cfda2af23d111d085b773794ffe0d24b6 (diff) |
add a destructor for Gtkmm2ext::Pane that unparents the children.
This seems to be required, although there is confusion in Gtkmm3 about this.
Diffstat (limited to 'libs')
-rw-r--r-- | libs/gtkmm2ext/gtkmm2ext/pane.h | 2 | ||||
-rw-r--r-- | libs/gtkmm2ext/pane.cc | 10 |
2 files changed, 10 insertions, 2 deletions
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<Child> Children; Pane (bool horizontal); + ~Pane(); + void set_divider (std::vector<float>::size_type divider, float fract); float get_divider (std::vector<float>::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 |