Remove now redundant Overlay::is_over
The `mouse_interaction` method can be properly used now to encode hover status with the `None` and `Idle` variants.
This commit is contained in:
parent
a01beefa84
commit
9e934fe2a7
15 changed files with 92 additions and 256 deletions
|
|
@ -836,7 +836,7 @@ where
|
|||
tree: &'b mut widget::Tree,
|
||||
layout: Layout<'_>,
|
||||
_renderer: &Renderer,
|
||||
_viewport: &Rectangle,
|
||||
viewport: &Rectangle,
|
||||
translation: Vector,
|
||||
) -> Option<overlay::Element<'b, Message, Theme, Renderer>> {
|
||||
let is_focused = {
|
||||
|
|
@ -889,12 +889,11 @@ where
|
|||
menu = menu.text_size(size);
|
||||
}
|
||||
|
||||
Some(
|
||||
menu.overlay(
|
||||
layout.position() + translation,
|
||||
bounds.height,
|
||||
),
|
||||
)
|
||||
Some(menu.overlay(
|
||||
layout.position() + translation,
|
||||
*viewport,
|
||||
bounds.height,
|
||||
))
|
||||
}
|
||||
} else {
|
||||
None
|
||||
|
|
|
|||
|
|
@ -8,8 +8,8 @@ use crate::core::renderer;
|
|||
use crate::core::widget;
|
||||
use crate::core::widget::tree;
|
||||
use crate::core::{
|
||||
Clipboard, Element, Event, Layout, Length, Point, Rectangle, Shadow, Shell,
|
||||
Size, Transformation, Vector, Widget,
|
||||
Clipboard, Element, Event, Layout, Length, Rectangle, Shadow, Shell, Size,
|
||||
Transformation, Vector, Widget,
|
||||
};
|
||||
|
||||
/// A widget that can make its contents float over other widgets.
|
||||
|
|
@ -298,18 +298,6 @@ where
|
|||
layout::Node::new(bounds.size()).move_to(bounds.position())
|
||||
}
|
||||
|
||||
fn is_over(
|
||||
&self,
|
||||
layout: Layout<'_>,
|
||||
_renderer: &Renderer,
|
||||
cursor_position: Point,
|
||||
) -> bool {
|
||||
self.float.opaque
|
||||
&& layout
|
||||
.bounds()
|
||||
.contains(cursor_position * self.transformation.inverse())
|
||||
}
|
||||
|
||||
fn update(
|
||||
&mut self,
|
||||
event: &Event,
|
||||
|
|
@ -379,7 +367,6 @@ where
|
|||
&self,
|
||||
_layout: Layout<'_>,
|
||||
cursor: mouse::Cursor,
|
||||
_viewport: &Rectangle,
|
||||
renderer: &Renderer,
|
||||
) -> mouse::Interaction {
|
||||
self.float.content.as_widget().mouse_interaction(
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@ use crate::core::renderer;
|
|||
use crate::core::widget::tree::{self, Tree};
|
||||
use crate::core::widget::{self, Widget};
|
||||
use crate::core::{
|
||||
self, Clipboard, Event, Length, Point, Rectangle, Shell, Size, Vector,
|
||||
self, Clipboard, Event, Length, Rectangle, Shell, Size, Vector,
|
||||
};
|
||||
use crate::runtime::overlay::Nested;
|
||||
|
||||
|
|
@ -378,11 +378,10 @@ where
|
|||
&self,
|
||||
layout: Layout<'_>,
|
||||
cursor: mouse::Cursor,
|
||||
viewport: &Rectangle,
|
||||
renderer: &Renderer,
|
||||
) -> mouse::Interaction {
|
||||
self.with_overlay_maybe(|overlay| {
|
||||
overlay.mouse_interaction(layout, cursor, viewport, renderer)
|
||||
overlay.mouse_interaction(layout, cursor, renderer)
|
||||
})
|
||||
.unwrap_or_default()
|
||||
}
|
||||
|
|
@ -400,18 +399,6 @@ where
|
|||
overlay.update(event, layout, cursor, renderer, clipboard, shell);
|
||||
});
|
||||
}
|
||||
|
||||
fn is_over(
|
||||
&self,
|
||||
layout: Layout<'_>,
|
||||
renderer: &Renderer,
|
||||
cursor_position: Point,
|
||||
) -> bool {
|
||||
self.with_overlay_maybe(|overlay| {
|
||||
overlay.is_over(layout, renderer, cursor_position)
|
||||
})
|
||||
.unwrap_or_default()
|
||||
}
|
||||
}
|
||||
|
||||
impl<'a, Message, Theme, Renderer, Dependency, View>
|
||||
|
|
|
|||
|
|
@ -7,8 +7,7 @@ use crate::core::renderer;
|
|||
use crate::core::widget;
|
||||
use crate::core::widget::tree::{self, Tree};
|
||||
use crate::core::{
|
||||
self, Clipboard, Element, Length, Point, Rectangle, Shell, Size, Vector,
|
||||
Widget,
|
||||
self, Clipboard, Element, Length, Rectangle, Shell, Size, Vector, Widget,
|
||||
};
|
||||
use crate::runtime::overlay::Nested;
|
||||
|
||||
|
|
@ -590,11 +589,10 @@ where
|
|||
&self,
|
||||
layout: Layout<'_>,
|
||||
cursor: mouse::Cursor,
|
||||
viewport: &Rectangle,
|
||||
renderer: &Renderer,
|
||||
) -> mouse::Interaction {
|
||||
self.with_overlay_maybe(|overlay| {
|
||||
overlay.mouse_interaction(layout, cursor, viewport, renderer)
|
||||
overlay.mouse_interaction(layout, cursor, renderer)
|
||||
})
|
||||
.unwrap_or_default()
|
||||
}
|
||||
|
|
@ -666,16 +664,4 @@ where
|
|||
shell.invalidate_layout();
|
||||
}
|
||||
}
|
||||
|
||||
fn is_over(
|
||||
&self,
|
||||
layout: Layout<'_>,
|
||||
renderer: &Renderer,
|
||||
cursor_position: Point,
|
||||
) -> bool {
|
||||
self.with_overlay_maybe(|overlay| {
|
||||
overlay.is_over(layout, renderer, cursor_position)
|
||||
})
|
||||
.unwrap_or_default()
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -416,11 +416,10 @@ where
|
|||
&self,
|
||||
layout: Layout<'_>,
|
||||
cursor: mouse::Cursor,
|
||||
viewport: &Rectangle,
|
||||
renderer: &Renderer,
|
||||
) -> mouse::Interaction {
|
||||
self.with_overlay_maybe(|overlay| {
|
||||
overlay.mouse_interaction(layout, cursor, viewport, renderer)
|
||||
overlay.mouse_interaction(layout, cursor, renderer)
|
||||
})
|
||||
.unwrap_or_default()
|
||||
}
|
||||
|
|
@ -449,18 +448,6 @@ where
|
|||
}
|
||||
}
|
||||
|
||||
fn is_over(
|
||||
&self,
|
||||
layout: Layout<'_>,
|
||||
renderer: &Renderer,
|
||||
cursor_position: Point,
|
||||
) -> bool {
|
||||
self.with_overlay_maybe(|overlay| {
|
||||
overlay.is_over(layout, renderer, cursor_position)
|
||||
})
|
||||
.unwrap_or_default()
|
||||
}
|
||||
|
||||
fn operate(
|
||||
&mut self,
|
||||
layout: Layout<'_>,
|
||||
|
|
|
|||
|
|
@ -127,10 +127,12 @@ where
|
|||
pub fn overlay(
|
||||
self,
|
||||
position: Point,
|
||||
viewport: Rectangle,
|
||||
target_height: f32,
|
||||
) -> overlay::Element<'a, Message, Theme, Renderer> {
|
||||
overlay::Element::new(Box::new(Overlay::new(
|
||||
position,
|
||||
viewport,
|
||||
self,
|
||||
target_height,
|
||||
)))
|
||||
|
|
@ -164,6 +166,7 @@ where
|
|||
Renderer: crate::core::Renderer,
|
||||
{
|
||||
position: Point,
|
||||
viewport: Rectangle,
|
||||
state: &'a mut Tree,
|
||||
list: Scrollable<'a, Message, Theme, Renderer>,
|
||||
width: f32,
|
||||
|
|
@ -180,6 +183,7 @@ where
|
|||
{
|
||||
pub fn new<T>(
|
||||
position: Point,
|
||||
viewport: Rectangle,
|
||||
menu: Menu<'a, 'b, T, Message, Theme, Renderer>,
|
||||
target_height: f32,
|
||||
) -> Self
|
||||
|
|
@ -218,6 +222,7 @@ where
|
|||
|
||||
Self {
|
||||
position,
|
||||
viewport,
|
||||
state: &mut state.tree,
|
||||
list,
|
||||
width,
|
||||
|
|
@ -282,11 +287,15 @@ where
|
|||
&self,
|
||||
layout: Layout<'_>,
|
||||
cursor: mouse::Cursor,
|
||||
viewport: &Rectangle,
|
||||
renderer: &Renderer,
|
||||
) -> mouse::Interaction {
|
||||
self.list
|
||||
.mouse_interaction(self.state, layout, cursor, viewport, renderer)
|
||||
self.list.mouse_interaction(
|
||||
self.state,
|
||||
layout,
|
||||
cursor,
|
||||
&self.viewport,
|
||||
renderer,
|
||||
)
|
||||
}
|
||||
|
||||
fn draw(
|
||||
|
|
|
|||
|
|
@ -690,7 +690,7 @@ where
|
|||
tree: &'b mut Tree,
|
||||
layout: Layout<'_>,
|
||||
renderer: &Renderer,
|
||||
_viewport: &Rectangle,
|
||||
viewport: &Rectangle,
|
||||
translation: Vector,
|
||||
) -> Option<overlay::Element<'b, Message, Theme, Renderer>> {
|
||||
let state = tree.state.downcast_mut::<State<Renderer::Paragraph>>();
|
||||
|
|
@ -722,7 +722,11 @@ where
|
|||
menu = menu.text_size(text_size);
|
||||
}
|
||||
|
||||
Some(menu.overlay(layout.position() + translation, bounds.height))
|
||||
Some(menu.overlay(
|
||||
layout.position() + translation,
|
||||
*viewport,
|
||||
bounds.height,
|
||||
))
|
||||
} else {
|
||||
None
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,8 +6,8 @@ use crate::core::renderer;
|
|||
use crate::core::widget::Operation;
|
||||
use crate::core::widget::tree::{self, Tree};
|
||||
use crate::core::{
|
||||
Background, Clipboard, Color, Element, Event, Layout, Length, Point,
|
||||
Rectangle, Shell, Size, Vector, Widget,
|
||||
Background, Clipboard, Color, Element, Event, Layout, Length, Rectangle,
|
||||
Shell, Size, Vector, Widget,
|
||||
};
|
||||
|
||||
use std::marker::PhantomData;
|
||||
|
|
@ -248,25 +248,11 @@ where
|
|||
&self,
|
||||
layout: Layout<'_>,
|
||||
cursor: mouse::Cursor,
|
||||
viewport: &Rectangle,
|
||||
renderer: &Renderer,
|
||||
) -> mouse::Interaction {
|
||||
self.content
|
||||
.as_overlay()
|
||||
.mouse_interaction(layout, cursor, viewport, renderer)
|
||||
}
|
||||
|
||||
fn is_over(
|
||||
&self,
|
||||
layout: Layout<'_>,
|
||||
renderer: &Renderer,
|
||||
cursor_position: Point,
|
||||
) -> bool {
|
||||
self.content.as_overlay().is_over(
|
||||
layout,
|
||||
renderer,
|
||||
cursor_position,
|
||||
)
|
||||
.mouse_interaction(layout, cursor, renderer)
|
||||
}
|
||||
|
||||
fn overlay<'b>(
|
||||
|
|
|
|||
|
|
@ -508,13 +508,4 @@ where
|
|||
&Rectangle::with_size(Size::INFINITY),
|
||||
);
|
||||
}
|
||||
|
||||
fn is_over(
|
||||
&self,
|
||||
_layout: Layout<'_>,
|
||||
_renderer: &Renderer,
|
||||
_cursor_position: Point,
|
||||
) -> bool {
|
||||
false
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue