summaryrefslogtreecommitdiff
path: root/libs
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2016-06-06 16:05:25 -0400
committerPaul Davis <paul@linuxaudiosystems.com>2016-06-06 16:05:25 -0400
commit5700296cb66c1ebf16903b9baa8883395779a7fd (patch)
treefdbb6b8101df562fb505975f0cfc986cc51981ea /libs
parent084da26cfda2af23d111d085b773794ffe0d24b6 (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.h2
-rw-r--r--libs/gtkmm2ext/pane.cc10
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