diff --git a/Libraries/LibWeb/OutOfProcessWebView.cpp b/Libraries/LibWeb/OutOfProcessWebView.cpp index 7044a2c63c..50c71de703 100644 --- a/Libraries/LibWeb/OutOfProcessWebView.cpp +++ b/Libraries/LibWeb/OutOfProcessWebView.cpp @@ -31,6 +31,7 @@ #include #include #include +#include #include REGISTER_WIDGET(Web, OutOfProcessWebView) @@ -76,8 +77,14 @@ void OutOfProcessWebView::paint_event(GUI::PaintEvent& event) return; GUI::Painter painter(*this); - painter.add_clip_rect(frame_inner_rect()); painter.add_clip_rect(event.rect()); + + if (!m_has_usable_bitmap) { + painter.fill_rect(frame_inner_rect(), palette().base()); + return; + } + + painter.add_clip_rect(frame_inner_rect()); painter.translate(frame_thickness(), frame_thickness()); ASSERT(m_front_bitmap); @@ -92,6 +99,7 @@ void OutOfProcessWebView::resize_event(GUI::ResizeEvent& event) m_front_bitmap = nullptr; m_back_bitmap = nullptr; + m_has_usable_bitmap = false; if (available_size().is_empty()) return; @@ -143,6 +151,7 @@ void OutOfProcessWebView::theme_change_event(GUI::ThemeChangeEvent& event) void OutOfProcessWebView::notify_server_did_paint(Badge, i32 shbuf_id) { if (m_back_bitmap->shbuf_id() == shbuf_id) { + m_has_usable_bitmap = true; swap(m_back_bitmap, m_front_bitmap); update(); } diff --git a/Libraries/LibWeb/OutOfProcessWebView.h b/Libraries/LibWeb/OutOfProcessWebView.h index 5779d6f6da..a742a01af8 100644 --- a/Libraries/LibWeb/OutOfProcessWebView.h +++ b/Libraries/LibWeb/OutOfProcessWebView.h @@ -89,6 +89,8 @@ private: RefPtr m_client; RefPtr m_front_bitmap; RefPtr m_back_bitmap; + + bool m_has_usable_bitmap { false }; }; }