diff --git a/Userland/Libraries/LibGUI/Widget.cpp b/Userland/Libraries/LibGUI/Widget.cpp index 491040d082..b4b07aea5e 100644 --- a/Userland/Libraries/LibGUI/Widget.cpp +++ b/Userland/Libraries/LibGUI/Widget.cpp @@ -318,6 +318,13 @@ void Widget::handle_keydown_event(KeyEvent& event) void Widget::handle_paint_event(PaintEvent& event) { VERIFY(is_visible()); + + if (!rect().intersects(event.rect())) { + // This widget is not inside the paint event rect. + // Since widgets fully contain their children, we don't need to recurse further. + return; + } + if (fill_with_background_color()) { Painter painter(*this); painter.fill_rect(event.rect(), palette().color(background_role()));