aboutsummaryrefslogtreecommitdiff
path: root/gui/widget.cpp
diff options
context:
space:
mode:
authorThierry Crozat2017-04-06 21:50:16 +0100
committerThierry Crozat2017-04-06 21:55:28 +0100
commit91125bcbcd3cf9c0de9818f341a55f0e7f7b595c (patch)
tree4a5dbc6de8dc2df4d509568ae5aafec35404855f /gui/widget.cpp
parent47d339509f2386bd10d3245592408090cd55d733 (diff)
downloadscummvm-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.cpp13
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);
}