From ad08165a252d096ba7e4730efce9fb96181b5373 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Fri, 15 Mar 2019 16:45:27 +0100 Subject: [PATCH] LibGUI: Hit testing should skip invisible widgets. --- LibGUI/GWidget.cpp | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/LibGUI/GWidget.cpp b/LibGUI/GWidget.cpp index 5a02ce2887..15ee45de32 100644 --- a/LibGUI/GWidget.cpp +++ b/LibGUI/GWidget.cpp @@ -216,10 +216,13 @@ GWidget::HitTestResult GWidget::hit_test(int x, int y) { // FIXME: Care about z-order. for (auto* ch : children()) { - auto* child = (GWidget*)ch; - if (child->relative_rect().contains(x, y)) { - return child->hit_test(x - child->relative_rect().x(), y - child->relative_rect().y()); - } + if (!ch->is_widget()) + continue; + auto& child = *(GWidget*)ch; + if (!child.is_visible()) + continue; + if (child.relative_rect().contains(x, y)) + return child.hit_test(x - child.relative_rect().x(), y - child.relative_rect().y()); } return { this, x, y }; }