summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Userland/Libraries/LibWebView/OutOfProcessWebView.cpp10
-rw-r--r--Userland/Libraries/LibWebView/OutOfProcessWebView.h6
2 files changed, 15 insertions, 1 deletions
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<void(Gfx::IntPoint screen_position)> on_context_menu_request;
Function<void(const AK::URL&, DeprecatedString const& target, unsigned modifiers)> on_link_click;
Function<void(const AK::URL&, Gfx::IntPoint screen_position)> on_link_context_menu_request;
@@ -225,6 +229,8 @@ private:
bool m_is_awaiting_response_for_input_event { false };
Queue<InputEvent> m_pending_input_events;
+
+ bool m_content_scales_to_viewport { false };
};
}