diff options
author | Thierry Crozat | 2017-04-06 21:50:16 +0100 |
---|---|---|
committer | Thierry Crozat | 2017-04-06 21:55:28 +0100 |
commit | 91125bcbcd3cf9c0de9818f341a55f0e7f7b595c (patch) | |
tree | 4a5dbc6de8dc2df4d509568ae5aafec35404855f /gui/widget.cpp | |
parent | 47d339509f2386bd10d3245592408090cd55d733 (diff) | |
download | scummvm-rg350-91125bcbcd3cf9c0de9818f341a55f0e7f7b595c.tar.gz scummvm-rg350-91125bcbcd3cf9c0de9818f341a55f0e7f7b595c.tar.bz2 scummvm-rg350-91125bcbcd3cf9c0de9818f341a55f0e7f7b595c.zip |
GUI: Add method to know if a widget contains a given widget
Diffstat (limited to 'gui/widget.cpp')
-rw-r--r-- | gui/widget.cpp | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/gui/widget.cpp b/gui/widget.cpp index 850fad0e5f..4b84e19c09 100644 --- a/gui/widget.cpp +++ b/gui/widget.cpp @@ -175,6 +175,15 @@ Widget *Widget::findWidgetInChain(Widget *w, const char *name) { return 0; } +bool Widget::containsWidgetInChain(Widget *w, Widget *search) { + while (w) { + if (w == search || w->containsWidget(search)) + return true; + w = w->_next; + } + return false; +} + void Widget::setEnabled(bool e) { if ((_flags & WIDGET_ENABLED) != e) { if (e) @@ -837,6 +846,10 @@ ContainerWidget::~ContainerWidget() { } } +bool ContainerWidget::containsWidget(Widget *w) const { + return containsWidgetInChain(_firstWidget, w); +} + Widget *ContainerWidget::findWidget(int x, int y) { return findWidgetInChain(_firstWidget, x, y); } |