aboutsummaryrefslogtreecommitdiff
path: root/gui/widget.cpp
diff options
context:
space:
mode:
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);
}