diff options
Diffstat (limited to 'src/menu/drawable_control.cpp')
-rw-r--r-- | src/menu/drawable_control.cpp | 34 |
1 files changed, 32 insertions, 2 deletions
diff --git a/src/menu/drawable_control.cpp b/src/menu/drawable_control.cpp index 9d00d3f1..a0b4ad27 100644 --- a/src/menu/drawable_control.cpp +++ b/src/menu/drawable_control.cpp @@ -37,7 +37,8 @@ namespace usdx DrawableControl::DrawableControl(Container* parent) : Control(parent), position(0, 0), size(0, 0), - clipping_required(false), parent(parent) + clipping_required(false), background(NULL), + parent(parent) { ContainerHelper(this).add(parent); } @@ -45,7 +46,8 @@ namespace usdx DrawableControl::DrawableControl(Container* parent, const ContainerHelper& helper) : Control(parent), position(0, 0), size(0, 0), - clipping_required(false), parent(parent) + clipping_required(false), background(NULL), + parent(parent) { helper.add(parent); } @@ -53,6 +55,11 @@ namespace usdx DrawableControl::~DrawableControl() { remove_parent(); + + if (background) { + delete background; + background = NULL; + } } bool DrawableControl::get_clipping_required(void) const @@ -66,6 +73,14 @@ namespace usdx clipping_required = value; } + void DrawableControl::draw(void) + { + boost::mutex::scoped_lock lock(background_mutex); + if (background) { + background->repaint(); + } + } + void DrawableControl::repaint(void) { { @@ -164,4 +179,19 @@ namespace usdx c->add(self); } } + + void DrawableControl::set_background(Background* background) + { + boost::mutex::scoped_lock lock(background_mutex); + if (this->background) { + delete this->background; + } + + this->background = background; + } + + const Background* DrawableControl::get_background(void) const + { + return background; + } }; |