diff --git a/Userland/Libraries/LibWebView/OutOfProcessWebView.cpp b/Userland/Libraries/LibWebView/OutOfProcessWebView.cpp index 1f0dd054f1..c00662ae96 100644 --- a/Userland/Libraries/LibWebView/OutOfProcessWebView.cpp +++ b/Userland/Libraries/LibWebView/OutOfProcessWebView.cpp @@ -106,7 +106,10 @@ void OutOfProcessWebView::paint_event(GUI::PaintEvent& event) if (auto* bitmap = m_client_state.has_usable_bitmap ? m_client_state.front_bitmap.bitmap.ptr() : m_backup_bitmap.ptr()) { painter.add_clip_rect(frame_inner_rect()); painter.translate(frame_thickness(), frame_thickness()); - painter.blit({ 0, 0 }, *bitmap, bitmap->rect()); + if (m_content_scales_to_viewport) + painter.draw_scaled_bitmap(rect(), *bitmap, bitmap->rect()); + else + painter.blit({ 0, 0 }, *bitmap, bitmap->rect()); return; } @@ -841,4 +844,9 @@ void OutOfProcessWebView::notify_server_did_get_accessibility_tree(DeprecatedStr on_get_accessibility_tree(accessibility_tree); } +void OutOfProcessWebView::set_content_scales_to_viewport(bool b) +{ + m_content_scales_to_viewport = b; +} + } diff --git a/Userland/Libraries/LibWebView/OutOfProcessWebView.h b/Userland/Libraries/LibWebView/OutOfProcessWebView.h index f7f761e29d..935af25e89 100644 --- a/Userland/Libraries/LibWebView/OutOfProcessWebView.h +++ b/Userland/Libraries/LibWebView/OutOfProcessWebView.h @@ -80,6 +80,10 @@ public: Gfx::ShareableBitmap take_screenshot() const; Gfx::ShareableBitmap take_document_screenshot(); + // This is a hint that tells OOPWV that the content will scale to the viewport size. + // In practice, this means that OOPWV may render scaled stale versions of the content while resizing. + void set_content_scales_to_viewport(bool); + Function on_context_menu_request; Function on_link_click; Function on_link_context_menu_request; @@ -225,6 +229,8 @@ private: bool m_is_awaiting_response_for_input_event { false }; Queue m_pending_input_events; + + bool m_content_scales_to_viewport { false }; }; }