aboutsummaryrefslogtreecommitdiffstats
path: root/src/menu/frame.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/menu/frame.cpp')
-rw-r--r--src/menu/frame.cpp21
1 files changed, 19 insertions, 2 deletions
diff --git a/src/menu/frame.cpp b/src/menu/frame.cpp
index d3695392..cbf073f5 100644
--- a/src/menu/frame.cpp
+++ b/src/menu/frame.cpp
@@ -32,17 +32,22 @@ namespace usdx
log4cpp::Category::getInstance("usdx.menu.frame");
Frame::Frame(Container* parent)
- : Container(parent), background(NULL)
+ : Container(parent, FrameContainerHelper(this)), background(NULL)
{
}
Frame::Frame(Container* parent, FrameBackground* background)
- : Container(parent), background(background)
+ : Container(parent, FrameContainerHelper(this)), background(background)
{
}
Frame::~Frame()
{
+ if (parent) {
+ parent->removeFrame();
+ parent = NULL;
+ }
+
if (background) {
delete background;
background = NULL;
@@ -71,4 +76,16 @@ namespace usdx
Container::draw();
}
+
+ Frame::FrameContainerHelper::FrameContainerHelper(Frame* self) :
+ ContainerHelper(self), self(self)
+ {
+ }
+
+ void Frame::FrameContainerHelper::add(Container* c) const
+ {
+ if (c) {
+ c->setFrame(self);
+ }
+ }
};