From 39fff3cf8a4b8e8f990c8c4ed3fd073c18f8a738 Mon Sep 17 00:00:00 2001 From: Aliaksandr Kalenik Date: Thu, 5 Jun 2025 23:25:34 +0200 Subject: [PATCH] LibWeb: Don't early return when masking area of StackingContext is empty An early return was occurring between the emission of PushStackingContext and PopStackingContext, resulting in a PushStackingContext without a corresponding PopStackingContext in the display list, which caused broken painting. Fixes black screen on Discord login page. --- Libraries/LibWeb/Painting/StackingContext.cpp | 2 -- Tests/LibWeb/Ref/expected/clip-path.html | 11 +++++++++++ Tests/LibWeb/Ref/input/clip-path.html | 13 +++++++++++++ 3 files changed, 24 insertions(+), 2 deletions(-) create mode 100644 Tests/LibWeb/Ref/expected/clip-path.html create mode 100644 Tests/LibWeb/Ref/input/clip-path.html diff --git a/Libraries/LibWeb/Painting/StackingContext.cpp b/Libraries/LibWeb/Painting/StackingContext.cpp index 7e4e03039f4..14e7595707d 100644 --- a/Libraries/LibWeb/Painting/StackingContext.cpp +++ b/Libraries/LibWeb/Painting/StackingContext.cpp @@ -362,8 +362,6 @@ void StackingContext::paint(PaintContext& context) const } if (auto masking_area = paintable_box().get_masking_area(); masking_area.has_value()) { - if (masking_area->is_empty()) - return; auto mask_bitmap = paintable_box().calculate_mask(context, *masking_area); if (mask_bitmap) { auto masking_area_rect = context.enclosing_device_rect(*masking_area).to_type(); diff --git a/Tests/LibWeb/Ref/expected/clip-path.html b/Tests/LibWeb/Ref/expected/clip-path.html new file mode 100644 index 00000000000..2f3d4729fb4 --- /dev/null +++ b/Tests/LibWeb/Ref/expected/clip-path.html @@ -0,0 +1,11 @@ + + + + +
+ + diff --git a/Tests/LibWeb/Ref/input/clip-path.html b/Tests/LibWeb/Ref/input/clip-path.html new file mode 100644 index 00000000000..d1e4ac76b99 --- /dev/null +++ b/Tests/LibWeb/Ref/input/clip-path.html @@ -0,0 +1,13 @@ + + + + + +
+
+ +