From 6ee92a1fd05e6aa4b7745d307213f497a79e68de Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Sat, 17 Sep 2022 18:05:54 +0200 Subject: [PATCH] Ladybird/WebView: Implement page_did_request_scroll_into_view() This makes #foo links actually scroll the #foo element into view. --- Ladybird/WebView.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/Ladybird/WebView.cpp b/Ladybird/WebView.cpp index ac4048fb2b..82f2e0e4aa 100644 --- a/Ladybird/WebView.cpp +++ b/Ladybird/WebView.cpp @@ -285,8 +285,16 @@ public: m_view.horizontalScrollBar()->setPageStep(m_viewport_rect.width()); } - virtual void page_did_request_scroll_into_view(Gfx::IntRect const&) override + virtual void page_did_request_scroll_into_view(Gfx::IntRect const& rect) override { + if (m_viewport_rect.contains(rect)) + return; + + if (rect.top() < m_viewport_rect.top()) { + m_view.verticalScrollBar()->setValue(rect.top()); + } else if (rect.top() > m_viewport_rect.top() && rect.bottom() > m_viewport_rect.bottom()) { + m_view.verticalScrollBar()->setValue(rect.bottom() - m_viewport_rect.height() + 1); + } } virtual void page_did_request_alert(String const& message) override