diff options
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); } |