From 0cedb7a7c47b8232cecb31c55b0ca556bcc13cec Mon Sep 17 00:00:00 2001 From: Sam Atkins Date: Sun, 19 Sep 2021 20:49:23 +0100 Subject: LibWeb: Give InlineNodes borders :^) --- Userland/Libraries/LibWeb/Layout/InlineNode.cpp | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/Userland/Libraries/LibWeb/Layout/InlineNode.cpp b/Userland/Libraries/LibWeb/Layout/InlineNode.cpp index e38cac640d..cebd859588 100644 --- a/Userland/Libraries/LibWeb/Layout/InlineNode.cpp +++ b/Userland/Libraries/LibWeb/Layout/InlineNode.cpp @@ -81,6 +81,31 @@ void InlineNode::paint(PaintContext& context, PaintPhase phase) }); } + if (phase == PaintPhase::Border) { + auto top_left_border_radius = computed_values().border_top_left_radius(); + auto top_right_border_radius = computed_values().border_top_right_radius(); + auto bottom_right_border_radius = computed_values().border_bottom_right_radius(); + auto bottom_left_border_radius = computed_values().border_bottom_left_radius(); + + auto borders_data = Painting::BordersData { + .top = computed_values().border_top(), + .right = computed_values().border_right(), + .bottom = computed_values().border_bottom(), + .left = computed_values().border_left(), + }; + + for_each_fragment([&](auto& fragment) { + // FIXME: This recalculates our (InlineNode's) absolute_rect() for every single fragment! + auto bordered_rect = fragment.absolute_rect(); + bordered_rect.inflate(borders_data.top.width, borders_data.right.width, borders_data.bottom.width, borders_data.left.width); + auto border_radius_data = Painting::normalized_border_radius_data(*this, bordered_rect, top_left_border_radius, top_right_border_radius, bottom_right_border_radius, bottom_left_border_radius); + + Painting::paint_all_borders(context, bordered_rect, border_radius_data, borders_data); + + return IterationDecision::Continue; + }); + } + if (phase == PaintPhase::Foreground && document().inspected_node() == dom_node()) { // FIXME: This paints a double-thick border between adjacent fragments, where ideally there // would be none. Once we implement non-rectangular outlines for the `outline` CSS -- cgit v1.2.3