From 91125bcbcd3cf9c0de9818f341a55f0e7f7b595c Mon Sep 17 00:00:00 2001 From: Thierry Crozat Date: Thu, 6 Apr 2017 21:50:16 +0100 Subject: GUI: Add method to know if a widget contains a given widget --- gui/widget.cpp | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'gui/widget.cpp') 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); } -- cgit v1.2.3