aboutsummaryrefslogtreecommitdiffstats
path: root/src/menu/drawable_control.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/menu/drawable_control.cpp')
-rw-r--r--src/menu/drawable_control.cpp72
1 files changed, 66 insertions, 6 deletions
diff --git a/src/menu/drawable_control.cpp b/src/menu/drawable_control.cpp
index 47df96db..72c3ec77 100644
--- a/src/menu/drawable_control.cpp
+++ b/src/menu/drawable_control.cpp
@@ -39,7 +39,7 @@ namespace usdx
DrawableControl::DrawableControl(Container* parent)
: Control(parent), position(0, 0), size(0, 0),
clipping_required(false), focusable(true), background(NULL),
- parent(parent)
+ debug_box(NULL), parent(parent)
{
ContainerHelper(this).add(parent);
}
@@ -48,7 +48,7 @@ namespace usdx
const ContainerHelper& helper)
: Control(parent), position(0, 0), size(0, 0),
clipping_required(false), focusable(true), background(NULL),
- parent(parent)
+ debug_box(NULL), parent(parent)
{
helper.add(parent);
}
@@ -61,6 +61,11 @@ namespace usdx
delete background;
background = NULL;
}
+
+ if (debug_box) {
+ delete debug_box;
+ debug_box = NULL;
+ }
}
bool DrawableControl::is_clipping_required(void) const
@@ -120,10 +125,14 @@ namespace usdx
if (Application::get_config()->get_debug_boxes())
{
- boost::shared_lock<boost::shared_mutex> lock(size_mutex);
- StaticRectangle s(RgbColor(255, 0, 0), size);
- s.set_stroke_width(2.0f);
- s.repaint();
+ if (debug_box == NULL) {
+ boost::shared_lock<boost::shared_mutex> lock(size_mutex);
+
+ debug_box = new StaticRectangle(RgbColor(255, 0, 0), size);
+ debug_box->set_stroke_width(2.0f);
+ }
+
+ debug_box->repaint();
}
}
@@ -230,4 +239,55 @@ namespace usdx
boost::shared_lock<boost::shared_mutex> lock(background_mutex);
return background;
}
+
+ const Rectangle<int> DrawableControl::get_absolut_rect(void) const
+ {
+ Rectangle<int> rect(get_position(), get_size());
+
+ if (parent) {
+ Rectangle<int> parent_rect = parent->get_absolut_rect();
+ rect += Point<int>(parent_rect.get_left(),
+ parent_rect.get_top());
+ rect = parent_rect.intersect(rect);
+ }
+
+ return rect;
+ }
+
+ DrawableControl* DrawableControl::get_component_at(const Point<int>& p)
+ {
+ if (focusable && get_absolut_rect().is_in(p)) {
+ return this;
+ }
+
+ return NULL;
+ }
+
+ void DrawableControl::mouse_move(const Point<int>& p)
+ {
+ }
+
+ void DrawableControl::mouse_down(uint8_t button, const Point<int>& p)
+ {
+ }
+
+ void DrawableControl::mouse_up(uint8_t button, const Point<int>& p)
+ {
+ }
+
+ void DrawableControl::mouse_enter(void)
+ {
+ }
+
+ void DrawableControl::mouse_leave(void)
+ {
+ }
+
+ void DrawableControl::mouse_click(uint8_t button, const Point<int>& p)
+ {
+ }
+
+ void DrawableControl::mouse_dbl_click(uint8_t button, const Point<int>& p)
+ {
+ }
};