summaryrefslogtreecommitdiffstats
path: root/widget/src/mouse_area.rs
diff options
context:
space:
mode:
authorLibravatar Héctor Ramón <hector@hecrj.dev>2024-01-22 11:48:38 +0100
committerLibravatar GitHub <noreply@github.com>2024-01-22 11:48:38 +0100
commit416e0026c021a8222c925979053d985553f947a6 (patch)
treebeb8bb6fd28459d6a0b4c39fb5812f9c126a035e /widget/src/mouse_area.rs
parent545cc909c9f356dd733d273173694db9b8c28594 (diff)
parente695f7a04c16f786154f25a486b649ddbfd62939 (diff)
downloadiced-416e0026c021a8222c925979053d985553f947a6.tar.gz
iced-416e0026c021a8222c925979053d985553f947a6.tar.bz2
iced-416e0026c021a8222c925979053d985553f947a6.zip
Merge pull request #2209 from iced-rs/remove-associated-theme
`Themer` widget
Diffstat (limited to '')
-rw-r--r--widget/src/mouse_area.rs38
1 files changed, 23 insertions, 15 deletions
diff --git a/widget/src/mouse_area.rs b/widget/src/mouse_area.rs
index 87cac3a7..62bb45d8 100644
--- a/widget/src/mouse_area.rs
+++ b/widget/src/mouse_area.rs
@@ -13,8 +13,13 @@ use crate::core::{
/// Emit messages on mouse events.
#[allow(missing_debug_implementations)]
-pub struct MouseArea<'a, Message, Renderer> {
- content: Element<'a, Message, Renderer>,
+pub struct MouseArea<
+ 'a,
+ Message,
+ Theme = crate::Theme,
+ Renderer = crate::Renderer,
+> {
+ content: Element<'a, Message, Theme, Renderer>,
on_press: Option<Message>,
on_release: Option<Message>,
on_right_press: Option<Message>,
@@ -23,7 +28,7 @@ pub struct MouseArea<'a, Message, Renderer> {
on_middle_release: Option<Message>,
}
-impl<'a, Message, Renderer> MouseArea<'a, Message, Renderer> {
+impl<'a, Message, Theme, Renderer> MouseArea<'a, Message, Theme, Renderer> {
/// The message to emit on a left button press.
#[must_use]
pub fn on_press(mut self, message: Message) -> Self {
@@ -73,9 +78,11 @@ struct State {
// TODO: Support on_mouse_enter and on_mouse_exit
}
-impl<'a, Message, Renderer> MouseArea<'a, Message, Renderer> {
+impl<'a, Message, Theme, Renderer> MouseArea<'a, Message, Theme, Renderer> {
/// Creates a [`MouseArea`] with the given content.
- pub fn new(content: impl Into<Element<'a, Message, Renderer>>) -> Self {
+ pub fn new(
+ content: impl Into<Element<'a, Message, Theme, Renderer>>,
+ ) -> Self {
MouseArea {
content: content.into(),
on_press: None,
@@ -88,8 +95,8 @@ impl<'a, Message, Renderer> MouseArea<'a, Message, Renderer> {
}
}
-impl<'a, Message, Renderer> Widget<Message, Renderer>
- for MouseArea<'a, Message, Renderer>
+impl<'a, Message, Theme, Renderer> Widget<Message, Theme, Renderer>
+ for MouseArea<'a, Message, Theme, Renderer>
where
Renderer: renderer::Renderer,
Message: Clone,
@@ -188,7 +195,7 @@ where
&self,
tree: &Tree,
renderer: &mut Renderer,
- theme: &Renderer::Theme,
+ theme: &Theme,
renderer_style: &renderer::Style,
layout: Layout<'_>,
cursor: mouse::Cursor,
@@ -210,7 +217,7 @@ where
tree: &'b mut Tree,
layout: Layout<'_>,
renderer: &Renderer,
- ) -> Option<overlay::Element<'b, Message, Renderer>> {
+ ) -> Option<overlay::Element<'b, Message, Theme, Renderer>> {
self.content.as_widget_mut().overlay(
&mut tree.children[0],
layout,
@@ -219,23 +226,24 @@ where
}
}
-impl<'a, Message, Renderer> From<MouseArea<'a, Message, Renderer>>
- for Element<'a, Message, Renderer>
+impl<'a, Message, Theme, Renderer> From<MouseArea<'a, Message, Theme, Renderer>>
+ for Element<'a, Message, Theme, Renderer>
where
Message: 'a + Clone,
+ Theme: 'a,
Renderer: 'a + renderer::Renderer,
{
fn from(
- area: MouseArea<'a, Message, Renderer>,
- ) -> Element<'a, Message, Renderer> {
+ area: MouseArea<'a, Message, Theme, Renderer>,
+ ) -> Element<'a, Message, Theme, Renderer> {
Element::new(area)
}
}
/// Processes the given [`Event`] and updates the [`State`] of an [`MouseArea`]
/// accordingly.
-fn update<Message: Clone, Renderer>(
- widget: &mut MouseArea<'_, Message, Renderer>,
+fn update<Message: Clone, Theme, Renderer>(
+ widget: &mut MouseArea<'_, Message, Theme, Renderer>,
event: &Event,
layout: Layout<'_>,
cursor: mouse::Cursor,