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/container.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 'src/menu/container.cpp')
-rw-r--r-- | src/menu/container.cpp | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/src/menu/container.cpp b/src/menu/container.cpp index 31155e3c..fb13d398 100644 --- a/src/menu/container.cpp +++ b/src/menu/container.cpp @@ -144,4 +144,25 @@ namespace usdx DrawableControl::set_size(width, height); recalculate_window_coords(); } + + DrawableControl* Container::get_component_at(const Point<int>& p) + { + if (!get_absolut_rect().is_in(p)) + return NULL; + + for (std::list<DrawableControl*>::iterator next = controls.begin(), it = next++; + it != controls.end(); it = next++) { + + DrawableControl* c = (*it)->get_component_at(p); + if (c != NULL) { + return c; + } + } + + if (frame) { + return frame->get_component_at(p); + } + + return this; + } }; |