summaryrefslogtreecommitdiff
path: root/Libraries/LibWeb/PageView.cpp
diff options
context:
space:
mode:
authorAndreas Kling <kling@serenityos.org>2020-06-25 15:31:56 +0200
committerAndreas Kling <kling@serenityos.org>2020-06-25 15:53:23 +0200
commitf650f18bd208dfcd55b836c44eec4bdf1ffc8fba (patch)
tree93644e2982134b356958e7f71f1a57020526d382 /Libraries/LibWeb/PageView.cpp
parentbab0143bb27f8dfcdde25863276518d3b94d4f6f (diff)
downloadserenity-f650f18bd208dfcd55b836c44eec4bdf1ffc8fba.zip
LibWeb: Make scroll-to-anchor zone in on the element's padding box
That seems to be what other engines do. This is a bit hackish but we'll soon have to redo scroll-to-anchor anyway for the multi-process model.
Diffstat (limited to 'Libraries/LibWeb/PageView.cpp')
-rw-r--r--Libraries/LibWeb/PageView.cpp5
1 files changed, 5 insertions, 0 deletions
diff --git a/Libraries/LibWeb/PageView.cpp b/Libraries/LibWeb/PageView.cpp
index 4230183ad1..95cafa09bf 100644
--- a/Libraries/LibWeb/PageView.cpp
+++ b/Libraries/LibWeb/PageView.cpp
@@ -331,6 +331,11 @@ void PageView::scroll_to_anchor(const StringView& name)
}
auto& layout_node = *element->layout_node();
Gfx::FloatRect float_rect { layout_node.box_type_agnostic_position(), { (float)visible_content_rect().width(), (float)visible_content_rect().height() } };
+ if (is<LayoutBox>(layout_node)) {
+ auto& layout_box = to<LayoutBox>(layout_node);
+ auto padding_box = layout_box.box_model().padding_box(layout_box);
+ float_rect.move_by(-padding_box.left, -padding_box.top);
+ }
scroll_into_view(enclosing_int_rect(float_rect), true, true);
window()->set_override_cursor(GUI::StandardCursor::None);
}