Stop leaking impl details in scrollable Renderer

This commit is contained in:
Héctor Ramón Jiménez 2019-10-29 02:13:22 +01:00
parent be488ac738
commit a3c55f7517
2 changed files with 16 additions and 8 deletions

View file

@ -1,6 +1,6 @@
use crate::{
column, input::mouse, Element, Event, Hasher, Layout, Node, Point, Style,
Widget,
column, input::mouse, Element, Event, Hasher, Layout, Node, Point,
Rectangle, Style, Widget,
};
pub use iced_core::scrollable::State;
@ -86,7 +86,16 @@ where
layout: Layout<'_>,
cursor_position: Point,
) -> Renderer::Output {
self::Renderer::draw(renderer, &self, layout, cursor_position)
let bounds = layout.bounds();
let content_layout = layout.children().next().unwrap();
self::Renderer::draw(
renderer,
&self,
bounds,
content_layout,
cursor_position,
)
}
fn hash_layout(&self, state: &mut Hasher) {
@ -98,7 +107,8 @@ pub trait Renderer: crate::Renderer + Sized {
fn draw<Message>(
&mut self,
scrollable: &Scrollable<'_, Message, Self>,
layout: Layout<'_>,
bounds: Rectangle,
content_layout: Layout<'_>,
cursor_position: Point,
) -> Self::Output;
}

View file

@ -7,13 +7,11 @@ impl scrollable::Renderer for Renderer {
fn draw<Message>(
&mut self,
scrollable: &Scrollable<'_, Message, Self>,
layout: Layout<'_>,
bounds: Rectangle,
content: Layout<'_>,
cursor_position: Point,
) -> Self::Output {
let bounds = layout.bounds();
let is_mouse_over = bounds.contains(cursor_position);
let content = layout.children().next().unwrap();
let content_bounds = content.bounds();
let offset = scrollable.state.offset(bounds, content_bounds);