Introduce viewport to Widget::draw

This should eventually allow us to only generate primitives that are
visible.
This commit is contained in:
Héctor Ramón Jiménez 2020-08-18 03:37:32 +02:00
parent 8a3ce90959
commit d328b07b39
31 changed files with 123 additions and 35 deletions

View file

@ -1,4 +1,6 @@
use crate::{layout, overlay, Clipboard, Element, Event, Layout, Point, Size};
use crate::layout;
use crate::overlay;
use crate::{Clipboard, Element, Event, Layout, Point, Rectangle, Size};
use std::hash::Hasher;
@ -327,6 +329,8 @@ where
renderer: &mut Renderer,
cursor_position: Point,
) -> Renderer::Output {
let viewport = Rectangle::with_size(self.bounds);
let overlay = if let Some(mut overlay) =
self.root.overlay(Layout::new(&self.base.layout))
{
@ -365,6 +369,7 @@ where
&Renderer::Defaults::default(),
Layout::new(&self.base.layout),
base_cursor,
&viewport,
);
renderer.overlay(
@ -378,6 +383,7 @@ where
&Renderer::Defaults::default(),
Layout::new(&self.base.layout),
cursor_position,
&viewport,
)
}
}