From 4f5f444d7c507105d025471fbe930e50653c05bf Mon Sep 17 00:00:00 2001 From: Héctor Ramón Jiménez Date: Mon, 18 Oct 2021 16:59:42 +0700 Subject: Implement `Widget::mouse_interaction` for `Button` --- native/src/widget/button.rs | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/native/src/widget/button.rs b/native/src/widget/button.rs index a05210fd..a654cf12 100644 --- a/native/src/widget/button.rs +++ b/native/src/widget/button.rs @@ -245,6 +245,22 @@ where event::Status::Ignored } + fn mouse_interaction( + &self, + layout: Layout<'_>, + _viewport: &Rectangle, + cursor_position: Point, + ) -> mouse::Interaction { + let is_mouse_over = layout.bounds().contains(cursor_position); + let is_disabled = self.on_press.is_none(); + + if is_mouse_over && !is_disabled { + mouse::Interaction::Pointer + } else { + mouse::Interaction::default() + } + } + fn draw( &self, renderer: &mut Renderer, @@ -257,8 +273,9 @@ where let content_layout = layout.children().next().unwrap(); let is_mouse_over = bounds.contains(cursor_position); + let is_disabled = self.on_press.is_none(); - let styling = if self.on_press.is_none() { + let styling = if is_disabled { self.style_sheet.disabled() } else if is_mouse_over { if self.state.is_pressed { -- cgit