Add Hidden variant to mouse::Interaction

This commit is contained in:
thorn132 2024-12-04 18:29:49 -07:00 committed by Héctor Ramón Jiménez
parent 9565f88cb7
commit 3a6f29ce67
No known key found for this signature in database
GPG key ID: 7CC46565708259A7
3 changed files with 18 additions and 5 deletions

View file

@ -4,6 +4,7 @@
pub enum Interaction {
#[default]
None,
Hidden,
Idle,
Pointer,
Grab,

View file

@ -467,10 +467,13 @@ pub fn window_theme(mode: theme::Mode) -> Option<winit::window::Theme> {
/// [`winit`]: https://github.com/rust-windowing/winit
pub fn mouse_interaction(
interaction: mouse::Interaction,
) -> winit::window::CursorIcon {
) -> Option<winit::window::CursorIcon> {
use mouse::Interaction;
match interaction {
let icon = match interaction {
Interaction::Hidden => {
return None;
}
Interaction::None | Interaction::Idle => {
winit::window::CursorIcon::Default
}
@ -497,7 +500,9 @@ pub fn mouse_interaction(
Interaction::Move => winit::window::CursorIcon::Move,
Interaction::Copy => winit::window::CursorIcon::Copy,
Interaction::Help => winit::window::CursorIcon::Help,
}
};
Some(icon)
}
/// Converts a `MouseButton` from [`winit`] to an [`iced`] mouse button.

View file

@ -245,8 +245,15 @@ where
pub fn update_mouse(&mut self, interaction: mouse::Interaction) {
if interaction != self.mouse_interaction {
self.raw
.set_cursor(conversion::mouse_interaction(interaction));
if let Some(icon) = conversion::mouse_interaction(interaction) {
self.raw.set_cursor(icon);
if self.mouse_interaction == mouse::Interaction::Hidden {
self.raw.set_cursor_visible(true);
}
} else {
self.raw.set_cursor_visible(false);
}
self.mouse_interaction = interaction;
}