Introduce Renderer argument to mouse_interaction and on_event

This commit is contained in:
Héctor Ramón Jiménez 2022-01-11 14:12:28 +07:00
parent 6ab4611a6e
commit 810e086728
No known key found for this signature in database
GPG key ID: 140CC052C94F138E
24 changed files with 165 additions and 58 deletions

View file

@ -193,6 +193,7 @@ where
layout: Layout<'_>, layout: Layout<'_>,
cursor_position: Point, cursor_position: Point,
_viewport: &Rectangle, _viewport: &Rectangle,
_renderer: &Renderer<B>,
) -> mouse::Interaction { ) -> mouse::Interaction {
let bounds = layout.bounds(); let bounds = layout.bounds();
let cursor = Cursor::from_window_position(cursor_position); let cursor = Cursor::from_window_position(cursor_position);

View file

@ -214,15 +214,22 @@ where
layout: Layout<'_>, layout: Layout<'_>,
cursor_position: Point, cursor_position: Point,
viewport: &Rectangle, viewport: &Rectangle,
renderer: &Renderer,
) -> mouse::Interaction { ) -> mouse::Interaction {
self.with_element(|element| { self.with_element(|element| {
element.mouse_interaction(layout, cursor_position, viewport) element.mouse_interaction(
layout,
cursor_position,
viewport,
renderer,
)
}) })
} }
fn overlay( fn overlay(
&mut self, &mut self,
layout: Layout<'_>, layout: Layout<'_>,
renderer: &Renderer,
) -> Option<overlay::Element<'_, Message, Renderer>> { ) -> Option<overlay::Element<'_, Message, Renderer>> {
let has_overlay = self let has_overlay = self
.state .state
@ -236,7 +243,9 @@ where
CacheBuilder { CacheBuilder {
element, element,
message: PhantomData, message: PhantomData,
overlay_builder: |element| element.overlay(layout), overlay_builder: |element| {
element.overlay(layout, renderer)
},
} }
.build(), .build(),
); );
@ -331,9 +340,15 @@ where
layout: Layout<'_>, layout: Layout<'_>,
cursor_position: Point, cursor_position: Point,
viewport: &Rectangle, viewport: &Rectangle,
renderer: &Renderer,
) -> mouse::Interaction { ) -> mouse::Interaction {
self.with_overlay_maybe(|overlay| { self.with_overlay_maybe(|overlay| {
overlay.mouse_interaction(layout, cursor_position, viewport) overlay.mouse_interaction(
layout,
cursor_position,
viewport,
renderer,
)
}) })
.unwrap_or_default() .unwrap_or_default()
} }
@ -397,7 +412,7 @@ where
element: state.view(), element: state.view(),
message: PhantomData, message: PhantomData,
overlay_builder: |element| { overlay_builder: |element| {
element.overlay(layout) element.overlay(layout, renderer)
}, },
} }
.build(), .build(),

View file

@ -259,9 +259,14 @@ where
layout: Layout<'_>, layout: Layout<'_>,
cursor_position: Point, cursor_position: Point,
viewport: &Rectangle, viewport: &Rectangle,
renderer: &Renderer,
) -> mouse::Interaction { ) -> mouse::Interaction {
self.widget self.widget.mouse_interaction(
.mouse_interaction(layout, cursor_position, viewport) layout,
cursor_position,
viewport,
renderer,
)
} }
/// Computes the _layout_ hash of the [`Element`]. /// Computes the _layout_ hash of the [`Element`].
@ -273,8 +278,9 @@ where
pub fn overlay<'b>( pub fn overlay<'b>(
&'b mut self, &'b mut self,
layout: Layout<'_>, layout: Layout<'_>,
renderer: &Renderer,
) -> Option<overlay::Element<'b, Message, Renderer>> { ) -> Option<overlay::Element<'b, Message, Renderer>> {
self.widget.overlay(layout) self.widget.overlay(layout, renderer)
} }
} }
@ -363,9 +369,14 @@ where
layout: Layout<'_>, layout: Layout<'_>,
cursor_position: Point, cursor_position: Point,
viewport: &Rectangle, viewport: &Rectangle,
renderer: &Renderer,
) -> mouse::Interaction { ) -> mouse::Interaction {
self.widget self.widget.mouse_interaction(
.mouse_interaction(layout, cursor_position, viewport) layout,
cursor_position,
viewport,
renderer,
)
} }
fn hash_layout(&self, state: &mut Hasher) { fn hash_layout(&self, state: &mut Hasher) {
@ -375,11 +386,12 @@ where
fn overlay( fn overlay(
&mut self, &mut self,
layout: Layout<'_>, layout: Layout<'_>,
renderer: &Renderer,
) -> Option<overlay::Element<'_, B, Renderer>> { ) -> Option<overlay::Element<'_, B, Renderer>> {
let mapper = &self.mapper; let mapper = &self.mapper;
self.widget self.widget
.overlay(layout) .overlay(layout, renderer)
.map(move |overlay| overlay.map(mapper)) .map(move |overlay| overlay.map(mapper))
} }
} }
@ -482,10 +494,14 @@ where
layout: Layout<'_>, layout: Layout<'_>,
cursor_position: Point, cursor_position: Point,
viewport: &Rectangle, viewport: &Rectangle,
renderer: &Renderer,
) -> mouse::Interaction { ) -> mouse::Interaction {
self.element self.element.widget.mouse_interaction(
.widget layout,
.mouse_interaction(layout, cursor_position, viewport) cursor_position,
viewport,
renderer,
)
} }
fn hash_layout(&self, state: &mut Hasher) { fn hash_layout(&self, state: &mut Hasher) {
@ -495,7 +511,8 @@ where
fn overlay( fn overlay(
&mut self, &mut self,
layout: Layout<'_>, layout: Layout<'_>,
renderer: &Renderer,
) -> Option<overlay::Element<'_, Message, Renderer>> { ) -> Option<overlay::Element<'_, Message, Renderer>> {
self.element.overlay(layout) self.element.overlay(layout, renderer)
} }
} }

View file

@ -84,6 +84,7 @@ where
_layout: Layout<'_>, _layout: Layout<'_>,
_cursor_position: Point, _cursor_position: Point,
_viewport: &Rectangle, _viewport: &Rectangle,
_renderer: &Renderer,
) -> mouse::Interaction { ) -> mouse::Interaction {
mouse::Interaction::Idle mouse::Interaction::Idle
} }

View file

@ -80,9 +80,14 @@ where
layout: Layout<'_>, layout: Layout<'_>,
cursor_position: Point, cursor_position: Point,
viewport: &Rectangle, viewport: &Rectangle,
renderer: &Renderer,
) -> mouse::Interaction { ) -> mouse::Interaction {
self.overlay self.overlay.mouse_interaction(
.mouse_interaction(layout, cursor_position, viewport) layout,
cursor_position,
viewport,
renderer,
)
} }
/// Draws the [`Element`] and its children using the given [`Layout`]. /// Draws the [`Element`] and its children using the given [`Layout`].
@ -160,9 +165,14 @@ where
layout: Layout<'_>, layout: Layout<'_>,
cursor_position: Point, cursor_position: Point,
viewport: &Rectangle, viewport: &Rectangle,
renderer: &Renderer,
) -> mouse::Interaction { ) -> mouse::Interaction {
self.content self.content.mouse_interaction(
.mouse_interaction(layout, cursor_position, viewport) layout,
cursor_position,
viewport,
renderer,
)
} }
fn draw( fn draw(

View file

@ -239,9 +239,14 @@ where
layout: Layout<'_>, layout: Layout<'_>,
cursor_position: Point, cursor_position: Point,
viewport: &Rectangle, viewport: &Rectangle,
renderer: &Renderer,
) -> mouse::Interaction { ) -> mouse::Interaction {
self.container self.container.mouse_interaction(
.mouse_interaction(layout, cursor_position, viewport) layout,
cursor_position,
viewport,
renderer,
)
} }
fn draw( fn draw(
@ -392,6 +397,7 @@ where
layout: Layout<'_>, layout: Layout<'_>,
cursor_position: Point, cursor_position: Point,
_viewport: &Rectangle, _viewport: &Rectangle,
_renderer: &Renderer,
) -> mouse::Interaction { ) -> mouse::Interaction {
let is_mouse_over = layout.bounds().contains(cursor_position); let is_mouse_over = layout.bounds().contains(cursor_position);

View file

@ -205,7 +205,7 @@ where
let mut state = State::Updated; let mut state = State::Updated;
let (base_cursor, overlay_statuses) = if let Some(mut overlay) = let (base_cursor, overlay_statuses) = if let Some(mut overlay) =
self.root.overlay(Layout::new(&self.base.layout)) self.root.overlay(Layout::new(&self.base.layout), renderer)
{ {
let bounds = self.bounds; let bounds = self.bounds;
@ -391,7 +391,7 @@ where
let viewport = Rectangle::with_size(self.bounds); let viewport = Rectangle::with_size(self.bounds);
if let Some(mut overlay) = if let Some(mut overlay) =
self.root.overlay(Layout::new(&self.base.layout)) self.root.overlay(Layout::new(&self.base.layout), renderer)
{ {
let layer = Self::overlay_layer( let layer = Self::overlay_layer(
self.overlay.take(), self.overlay.take(),
@ -432,6 +432,7 @@ where
Layout::new(&self.base.layout), Layout::new(&self.base.layout),
cursor_position, cursor_position,
&viewport, &viewport,
renderer,
); );
let Self { let Self {
@ -449,30 +450,33 @@ where
overlay overlay
.as_ref() .as_ref()
.and_then(|layer| { .and_then(|layer| {
root.overlay(Layout::new(&base.layout)).map(|overlay| { root.overlay(Layout::new(&base.layout), renderer).map(
let overlay_interaction = overlay.mouse_interaction( |overlay| {
Layout::new(&layer.layout), let overlay_interaction = overlay.mouse_interaction(
cursor_position,
&viewport,
);
let overlay_bounds = layer.layout.bounds();
renderer.with_layer(overlay_bounds, |renderer| {
overlay.draw(
renderer,
&renderer::Style::default(),
Layout::new(&layer.layout), Layout::new(&layer.layout),
cursor_position, cursor_position,
&viewport,
renderer,
); );
});
if overlay_bounds.contains(cursor_position) { let overlay_bounds = layer.layout.bounds();
overlay_interaction
} else { renderer.with_layer(overlay_bounds, |renderer| {
base_interaction overlay.draw(
} renderer,
}) &renderer::Style::default(),
Layout::new(&layer.layout),
cursor_position,
);
});
if overlay_bounds.contains(cursor_position) {
overlay_interaction
} else {
base_interaction
}
},
)
}) })
.unwrap_or(base_interaction) .unwrap_or(base_interaction)
} }

View file

@ -179,6 +179,7 @@ where
_layout: Layout<'_>, _layout: Layout<'_>,
_cursor_position: Point, _cursor_position: Point,
_viewport: &Rectangle, _viewport: &Rectangle,
_renderer: &Renderer,
) -> mouse::Interaction { ) -> mouse::Interaction {
mouse::Interaction::Idle mouse::Interaction::Idle
} }
@ -187,6 +188,7 @@ where
fn overlay( fn overlay(
&mut self, &mut self,
_layout: Layout<'_>, _layout: Layout<'_>,
_renderer: &Renderer,
) -> Option<overlay::Element<'_, Message, Renderer>> { ) -> Option<overlay::Element<'_, Message, Renderer>> {
None None
} }

View file

@ -253,6 +253,7 @@ where
layout: Layout<'_>, layout: Layout<'_>,
cursor_position: Point, cursor_position: Point,
_viewport: &Rectangle, _viewport: &Rectangle,
_renderer: &Renderer,
) -> mouse::Interaction { ) -> mouse::Interaction {
let is_mouse_over = layout.bounds().contains(cursor_position); let is_mouse_over = layout.bounds().contains(cursor_position);
let is_disabled = self.on_press.is_none(); let is_disabled = self.on_press.is_none();
@ -343,8 +344,10 @@ where
fn overlay( fn overlay(
&mut self, &mut self,
layout: Layout<'_>, layout: Layout<'_>,
renderer: &Renderer,
) -> Option<overlay::Element<'_, Message, Renderer>> { ) -> Option<overlay::Element<'_, Message, Renderer>> {
self.content.overlay(layout.children().next().unwrap()) self.content
.overlay(layout.children().next().unwrap(), renderer)
} }
} }

View file

@ -195,6 +195,7 @@ where
layout: Layout<'_>, layout: Layout<'_>,
cursor_position: Point, cursor_position: Point,
_viewport: &Rectangle, _viewport: &Rectangle,
_renderer: &Renderer,
) -> mouse::Interaction { ) -> mouse::Interaction {
if layout.bounds().contains(cursor_position) { if layout.bounds().contains(cursor_position) {
mouse::Interaction::Pointer mouse::Interaction::Pointer

View file

@ -169,6 +169,7 @@ where
layout: Layout<'_>, layout: Layout<'_>,
cursor_position: Point, cursor_position: Point,
viewport: &Rectangle, viewport: &Rectangle,
renderer: &Renderer,
) -> mouse::Interaction { ) -> mouse::Interaction {
self.children self.children
.iter() .iter()
@ -178,6 +179,7 @@ where
layout, layout,
cursor_position, cursor_position,
viewport, viewport,
renderer,
) )
}) })
.max() .max()
@ -217,11 +219,14 @@ where
fn overlay( fn overlay(
&mut self, &mut self,
layout: Layout<'_>, layout: Layout<'_>,
renderer: &Renderer,
) -> Option<overlay::Element<'_, Message, Renderer>> { ) -> Option<overlay::Element<'_, Message, Renderer>> {
self.children self.children
.iter_mut() .iter_mut()
.zip(layout.children()) .zip(layout.children())
.filter_map(|(child, layout)| child.widget.overlay(layout)) .filter_map(|(child, layout)| {
child.widget.overlay(layout, renderer)
})
.next() .next()
} }
} }

View file

@ -184,11 +184,13 @@ where
layout: Layout<'_>, layout: Layout<'_>,
cursor_position: Point, cursor_position: Point,
viewport: &Rectangle, viewport: &Rectangle,
renderer: &Renderer,
) -> mouse::Interaction { ) -> mouse::Interaction {
self.content.widget.mouse_interaction( self.content.widget.mouse_interaction(
layout.children().next().unwrap(), layout.children().next().unwrap(),
cursor_position, cursor_position,
viewport, viewport,
renderer,
) )
} }
@ -235,8 +237,10 @@ where
fn overlay( fn overlay(
&mut self, &mut self,
layout: Layout<'_>, layout: Layout<'_>,
renderer: &Renderer,
) -> Option<overlay::Element<'_, Message, Renderer>> { ) -> Option<overlay::Element<'_, Message, Renderer>> {
self.content.overlay(layout.children().next().unwrap()) self.content
.overlay(layout.children().next().unwrap(), renderer)
} }
} }

View file

@ -286,6 +286,7 @@ where
layout: Layout<'_>, layout: Layout<'_>,
cursor_position: Point, cursor_position: Point,
_viewport: &Rectangle, _viewport: &Rectangle,
_renderer: &Renderer,
) -> mouse::Interaction { ) -> mouse::Interaction {
let bounds = layout.bounds(); let bounds = layout.bounds();
let is_mouse_over = bounds.contains(cursor_position); let is_mouse_over = bounds.contains(cursor_position);

View file

@ -472,6 +472,7 @@ where
layout: Layout<'_>, layout: Layout<'_>,
cursor_position: Point, cursor_position: Point,
viewport: &Rectangle, viewport: &Rectangle,
renderer: &Renderer,
) -> mouse::Interaction { ) -> mouse::Interaction {
if self.state.picked_pane().is_some() { if self.state.picked_pane().is_some() {
return mouse::Interaction::Grab; return mouse::Interaction::Grab;
@ -511,7 +512,12 @@ where
.iter() .iter()
.zip(layout.children()) .zip(layout.children())
.map(|((_pane, content), layout)| { .map(|((_pane, content), layout)| {
content.mouse_interaction(layout, cursor_position, viewport) content.mouse_interaction(
layout,
cursor_position,
viewport,
renderer,
)
}) })
.max() .max()
.unwrap_or_default() .unwrap_or_default()
@ -678,11 +684,12 @@ where
fn overlay( fn overlay(
&mut self, &mut self,
layout: Layout<'_>, layout: Layout<'_>,
renderer: &Renderer,
) -> Option<overlay::Element<'_, Message, Renderer>> { ) -> Option<overlay::Element<'_, Message, Renderer>> {
self.elements self.elements
.iter_mut() .iter_mut()
.zip(layout.children()) .zip(layout.children())
.filter_map(|((_, pane), layout)| pane.overlay(layout)) .filter_map(|((_, pane), layout)| pane.overlay(layout, renderer))
.next() .next()
} }
} }

View file

@ -205,6 +205,7 @@ where
layout: Layout<'_>, layout: Layout<'_>,
cursor_position: Point, cursor_position: Point,
viewport: &Rectangle, viewport: &Rectangle,
renderer: &Renderer,
) -> mouse::Interaction { ) -> mouse::Interaction {
let (body_layout, title_bar_interaction) = let (body_layout, title_bar_interaction) =
if let Some(title_bar) = &self.title_bar { if let Some(title_bar) = &self.title_bar {
@ -222,6 +223,7 @@ where
title_bar_layout, title_bar_layout,
cursor_position, cursor_position,
viewport, viewport,
renderer,
); );
(children.next().unwrap(), mouse_interaction) (children.next().unwrap(), mouse_interaction)
@ -230,7 +232,7 @@ where
}; };
self.body self.body
.mouse_interaction(body_layout, cursor_position, viewport) .mouse_interaction(body_layout, cursor_position, viewport, renderer)
.max(title_bar_interaction) .max(title_bar_interaction)
} }
@ -245,17 +247,18 @@ where
pub(crate) fn overlay( pub(crate) fn overlay(
&mut self, &mut self,
layout: Layout<'_>, layout: Layout<'_>,
renderer: &Renderer,
) -> Option<overlay::Element<'_, Message, Renderer>> { ) -> Option<overlay::Element<'_, Message, Renderer>> {
if let Some(title_bar) = self.title_bar.as_mut() { if let Some(title_bar) = self.title_bar.as_mut() {
let mut children = layout.children(); let mut children = layout.children();
let title_bar_layout = children.next()?; let title_bar_layout = children.next()?;
match title_bar.overlay(title_bar_layout) { match title_bar.overlay(title_bar_layout, renderer) {
Some(overlay) => Some(overlay), Some(overlay) => Some(overlay),
None => self.body.overlay(children.next()?), None => self.body.overlay(children.next()?, renderer),
} }
} else { } else {
self.body.overlay(layout) self.body.overlay(layout, renderer)
} }
} }
} }

View file

@ -258,6 +258,7 @@ where
layout: Layout<'_>, layout: Layout<'_>,
cursor_position: Point, cursor_position: Point,
viewport: &Rectangle, viewport: &Rectangle,
renderer: &Renderer,
) -> mouse::Interaction { ) -> mouse::Interaction {
let mut children = layout.children(); let mut children = layout.children();
let padded = children.next().unwrap(); let padded = children.next().unwrap();
@ -269,13 +270,19 @@ where
title_layout, title_layout,
cursor_position, cursor_position,
viewport, viewport,
renderer,
); );
if let Some(controls) = &self.controls { if let Some(controls) = &self.controls {
let controls_layout = children.next().unwrap(); let controls_layout = children.next().unwrap();
controls controls
.mouse_interaction(controls_layout, cursor_position, viewport) .mouse_interaction(
controls_layout,
cursor_position,
viewport,
renderer,
)
.max(title_interaction) .max(title_interaction)
} else { } else {
title_interaction title_interaction
@ -285,6 +292,7 @@ where
pub(crate) fn overlay( pub(crate) fn overlay(
&mut self, &mut self,
layout: Layout<'_>, layout: Layout<'_>,
renderer: &Renderer,
) -> Option<overlay::Element<'_, Message, Renderer>> { ) -> Option<overlay::Element<'_, Message, Renderer>> {
let mut children = layout.children(); let mut children = layout.children();
let padded = children.next()?; let padded = children.next()?;
@ -296,11 +304,11 @@ where
content, controls, .. content, controls, ..
} = self; } = self;
content.overlay(title_layout).or_else(move || { content.overlay(title_layout, renderer).or_else(move || {
controls.as_mut().and_then(|controls| { controls.as_mut().and_then(|controls| {
let controls_layout = children.next()?; let controls_layout = children.next()?;
controls.overlay(controls_layout) controls.overlay(controls_layout, renderer)
}) })
}) })
} }

View file

@ -331,6 +331,7 @@ where
layout: Layout<'_>, layout: Layout<'_>,
cursor_position: Point, cursor_position: Point,
_viewport: &Rectangle, _viewport: &Rectangle,
_renderer: &Renderer,
) -> mouse::Interaction { ) -> mouse::Interaction {
let bounds = layout.bounds(); let bounds = layout.bounds();
let is_mouse_over = bounds.contains(cursor_position); let is_mouse_over = bounds.contains(cursor_position);
@ -415,6 +416,7 @@ where
fn overlay( fn overlay(
&mut self, &mut self,
layout: Layout<'_>, layout: Layout<'_>,
_renderer: &Renderer,
) -> Option<overlay::Element<'_, Message, Renderer>> { ) -> Option<overlay::Element<'_, Message, Renderer>> {
if *self.is_open { if *self.is_open {
let bounds = layout.bounds(); let bounds = layout.bounds();

View file

@ -209,6 +209,7 @@ where
layout: Layout<'_>, layout: Layout<'_>,
cursor_position: Point, cursor_position: Point,
_viewport: &Rectangle, _viewport: &Rectangle,
_renderer: &Renderer,
) -> mouse::Interaction { ) -> mouse::Interaction {
if layout.bounds().contains(cursor_position) { if layout.bounds().contains(cursor_position) {
mouse::Interaction::Pointer mouse::Interaction::Pointer

View file

@ -168,6 +168,7 @@ where
layout: Layout<'_>, layout: Layout<'_>,
cursor_position: Point, cursor_position: Point,
viewport: &Rectangle, viewport: &Rectangle,
renderer: &Renderer,
) -> mouse::Interaction { ) -> mouse::Interaction {
self.children self.children
.iter() .iter()
@ -177,6 +178,7 @@ where
layout, layout,
cursor_position, cursor_position,
viewport, viewport,
renderer,
) )
}) })
.max() .max()
@ -216,11 +218,14 @@ where
fn overlay( fn overlay(
&mut self, &mut self,
layout: Layout<'_>, layout: Layout<'_>,
renderer: &Renderer,
) -> Option<overlay::Element<'_, Message, Renderer>> { ) -> Option<overlay::Element<'_, Message, Renderer>> {
self.children self.children
.iter_mut() .iter_mut()
.zip(layout.children()) .zip(layout.children())
.filter_map(|(child, layout)| child.widget.overlay(layout)) .filter_map(|(child, layout)| {
child.widget.overlay(layout, renderer)
})
.next() .next()
} }
} }

View file

@ -427,6 +427,7 @@ where
layout: Layout<'_>, layout: Layout<'_>,
cursor_position: Point, cursor_position: Point,
_viewport: &Rectangle, _viewport: &Rectangle,
renderer: &Renderer,
) -> mouse::Interaction { ) -> mouse::Interaction {
let bounds = layout.bounds(); let bounds = layout.bounds();
let content_layout = layout.children().next().unwrap(); let content_layout = layout.children().next().unwrap();
@ -457,6 +458,7 @@ where
y: bounds.y + offset as f32, y: bounds.y + offset as f32,
..bounds ..bounds
}, },
renderer,
) )
} }
} }
@ -581,11 +583,12 @@ where
fn overlay( fn overlay(
&mut self, &mut self,
layout: Layout<'_>, layout: Layout<'_>,
renderer: &Renderer,
) -> Option<overlay::Element<'_, Message, Renderer>> { ) -> Option<overlay::Element<'_, Message, Renderer>> {
let Self { content, state, .. } = self; let Self { content, state, .. } = self;
content content
.overlay(layout.children().next().unwrap()) .overlay(layout.children().next().unwrap(), renderer)
.map(|overlay| { .map(|overlay| {
let bounds = layout.bounds(); let bounds = layout.bounds();
let content_layout = layout.children().next().unwrap(); let content_layout = layout.children().next().unwrap();

View file

@ -361,6 +361,7 @@ where
layout: Layout<'_>, layout: Layout<'_>,
cursor_position: Point, cursor_position: Point,
_viewport: &Rectangle, _viewport: &Rectangle,
_renderer: &Renderer,
) -> mouse::Interaction { ) -> mouse::Interaction {
let bounds = layout.bounds(); let bounds = layout.bounds();
let is_mouse_over = bounds.contains(cursor_position); let is_mouse_over = bounds.contains(cursor_position);

View file

@ -764,6 +764,7 @@ where
layout: Layout<'_>, layout: Layout<'_>,
cursor_position: Point, cursor_position: Point,
_viewport: &Rectangle, _viewport: &Rectangle,
_renderer: &Renderer,
) -> mouse::Interaction { ) -> mouse::Interaction {
if layout.bounds().contains(cursor_position) { if layout.bounds().contains(cursor_position) {
mouse::Interaction::Text mouse::Interaction::Text

View file

@ -196,6 +196,7 @@ where
layout: Layout<'_>, layout: Layout<'_>,
cursor_position: Point, cursor_position: Point,
_viewport: &Rectangle, _viewport: &Rectangle,
_renderer: &Renderer,
) -> mouse::Interaction { ) -> mouse::Interaction {
if layout.bounds().contains(cursor_position) { if layout.bounds().contains(cursor_position) {
mouse::Interaction::Pointer mouse::Interaction::Pointer

View file

@ -147,9 +147,14 @@ where
layout: Layout<'_>, layout: Layout<'_>,
cursor_position: Point, cursor_position: Point,
viewport: &Rectangle, viewport: &Rectangle,
renderer: &Renderer,
) -> mouse::Interaction { ) -> mouse::Interaction {
self.content self.content.mouse_interaction(
.mouse_interaction(layout, cursor_position, viewport) layout,
cursor_position,
viewport,
renderer,
)
} }
fn draw( fn draw(