Parcourir la source

WebContent: Use available size for bitmap (#2701)

After adding the scrolling feature, content available space reduced and
thus the bitmap size was always larger, than the inner size.
This lead to the horizontal scrollbar always beeing engaged.
Kevin Meyer il y a 5 ans
Parent
commit
0f6c5783d3
1 fichiers modifiés avec 6 ajouts et 5 suppressions
  1. 6 5
      Demos/WebView/WebContentView.cpp

+ 6 - 5
Demos/WebView/WebContentView.cpp

@@ -48,7 +48,7 @@ void WebContentView::load(const URL& url)
 
 
 void WebContentView::paint_event(GUI::PaintEvent& event)
 void WebContentView::paint_event(GUI::PaintEvent& event)
 {
 {
-    GUI::Frame::paint_event(event);
+    GUI::ScrollableWidget::paint_event(event);
 
 
     GUI::Painter painter(*this);
     GUI::Painter painter(*this);
     painter.add_clip_rect(frame_inner_rect());
     painter.add_clip_rect(frame_inner_rect());
@@ -61,11 +61,12 @@ void WebContentView::paint_event(GUI::PaintEvent& event)
 
 
 void WebContentView::resize_event(GUI::ResizeEvent& event)
 void WebContentView::resize_event(GUI::ResizeEvent& event)
 {
 {
-    GUI::Widget::resize_event(event);
-    auto bitmap = Gfx::Bitmap::create(Gfx::BitmapFormat::RGB32, event.size());
+    GUI::ScrollableWidget::resize_event(event);
+
+    auto bitmap = Gfx::Bitmap::create(Gfx::BitmapFormat::RGB32, available_size());
     m_bitmap = bitmap->to_bitmap_backed_by_shared_buffer();
     m_bitmap = bitmap->to_bitmap_backed_by_shared_buffer();
     m_bitmap->shared_buffer()->share_with(client().server_pid());
     m_bitmap->shared_buffer()->share_with(client().server_pid());
-    client().post_message(Messages::WebContentServer::SetViewportRect(Gfx::IntRect({ horizontal_scrollbar().value(), vertical_scrollbar().value() }, event.size())));
+    client().post_message(Messages::WebContentServer::SetViewportRect(Gfx::IntRect({ horizontal_scrollbar().value(), vertical_scrollbar().value() }, m_bitmap->size())));
     request_repaint();
     request_repaint();
 }
 }
 
 
@@ -116,7 +117,7 @@ void WebContentView::notify_server_did_change_title(Badge<WebContentClient>, con
 
 
 void WebContentView::did_scroll()
 void WebContentView::did_scroll()
 {
 {
-    client().post_message(Messages::WebContentServer::SetViewportRect(Gfx::IntRect({ horizontal_scrollbar().value(), vertical_scrollbar().value() }, size())));
+    client().post_message(Messages::WebContentServer::SetViewportRect(visible_content_rect()));
     request_repaint();
     request_repaint();
 }
 }