diff options
author | Alexander Sulfrian <alexander@sulfrian.net> | 2013-01-18 19:40:54 +0100 |
---|---|---|
committer | Alexander Sulfrian <alexander@sulfrian.net> | 2013-01-18 19:40:54 +0100 |
commit | 3ee941b5196cd9328f8e6d5de8fb0aeeae9e39f1 (patch) | |
tree | 263486c62c9fc1751ec5a35e97fc6fc0b7a6dfb5 /src/menu/drawable_control.cpp | |
parent | e6ab9e205cee131f75ba2435b52c68ae765360b9 (diff) | |
download | usdx-3ee941b5196cd9328f8e6d5de8fb0aeeae9e39f1.tar.gz usdx-3ee941b5196cd9328f8e6d5de8fb0aeeae9e39f1.tar.xz usdx-3ee941b5196cd9328f8e6d5de8fb0aeeae9e39f1.zip |
menu: add get_component_at to get component
This is the basis for mouse focus handling.
Diffstat (limited to '')
-rw-r--r-- | src/menu/drawable_control.cpp | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/src/menu/drawable_control.cpp b/src/menu/drawable_control.cpp index 47df96db..76749840 100644 --- a/src/menu/drawable_control.cpp +++ b/src/menu/drawable_control.cpp @@ -230,4 +230,26 @@ 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()); + } + + return rect; + } + + DrawableControl* DrawableControl::get_component_at(const Point<int>& p) + { + if (focusable && get_absolut_rect().is_in(p)) { + return this; + } + + return NULL; + } }; |