From 7d14a555e5f10e06094f49fb888761b4a9bed94f Mon Sep 17 00:00:00 2001 From: Micah Johnston Date: Sun, 17 Dec 2023 02:12:31 -0600 Subject: [PATCH] Expose public Window::set_mouse_cursor method (#161) The X11 backend has a full implementation of a `Window::set_mouse_cursor` method, but it isn't exposed via any public interface, which results in a lot of warnings for unused code. Add a public `set_mouse_cursor` method, along with stubbed-out versions in the Windows and macOS backends. --- src/macos/window.rs | 8 ++++++-- src/win/window.rs | 6 +++++- src/window.rs | 6 +++++- src/x11/window.rs | 1 - src/x11/xcb_connection.rs | 1 - 5 files changed, 16 insertions(+), 6 deletions(-) diff --git a/src/macos/window.rs b/src/macos/window.rs index e9f4685..72189ea 100644 --- a/src/macos/window.rs +++ b/src/macos/window.rs @@ -24,8 +24,8 @@ use raw_window_handle::{ }; use crate::{ - Event, EventStatus, Size, WindowEvent, WindowHandler, WindowInfo, WindowOpenOptions, - WindowScalePolicy, + Event, EventStatus, MouseCursor, Size, WindowEvent, WindowHandler, WindowInfo, + WindowOpenOptions, WindowScalePolicy, }; use super::keyboard::KeyboardState; @@ -302,6 +302,10 @@ impl Window { } } + pub fn set_mouse_cursor(&mut self, _mouse_cursor: MouseCursor) { + todo!() + } + #[cfg(feature = "opengl")] pub fn gl_context(&self) -> Option<&GlContext> { self.gl_context.as_ref() diff --git a/src/win/window.rs b/src/win/window.rs index 7e45b0a..2e1c823 100644 --- a/src/win/window.rs +++ b/src/win/window.rs @@ -34,7 +34,7 @@ use raw_window_handle::{ const BV_WINDOW_MUST_CLOSE: UINT = WM_USER + 1; use crate::{ - Event, MouseButton, MouseEvent, PhyPoint, PhySize, ScrollDelta, Size, WindowEvent, + Event, MouseButton, MouseCursor, MouseEvent, PhyPoint, PhySize, ScrollDelta, Size, WindowEvent, WindowHandler, WindowInfo, WindowOpenOptions, WindowScalePolicy, }; @@ -765,6 +765,10 @@ impl Window<'_> { self.state.deferred_tasks.borrow_mut().push_back(task); } + pub fn set_mouse_cursor(&mut self, _mouse_cursor: MouseCursor) { + todo!() + } + #[cfg(feature = "opengl")] pub fn gl_context(&self) -> Option<&GlContext> { self.state.gl_context.as_ref() diff --git a/src/window.rs b/src/window.rs index 4fac86b..e0372f8 100644 --- a/src/window.rs +++ b/src/window.rs @@ -6,7 +6,7 @@ use raw_window_handle::{ use crate::event::{Event, EventStatus}; use crate::window_open_options::WindowOpenOptions; -use crate::Size; +use crate::{MouseCursor, Size}; #[cfg(target_os = "macos")] use crate::macos as platform; @@ -101,6 +101,10 @@ impl<'a> Window<'a> { self.window.resize(size); } + pub fn set_mouse_cursor(&mut self, cursor: MouseCursor) { + self.window.set_mouse_cursor(cursor); + } + /// If provided, then an OpenGL context will be created for this window. You'll be able to /// access this context through [crate::Window::gl_context]. #[cfg(feature = "opengl")] diff --git a/src/x11/window.rs b/src/x11/window.rs index 972423f..f706e37 100644 --- a/src/x11/window.rs +++ b/src/x11/window.rs @@ -97,7 +97,6 @@ pub struct Window { window_id: u32, window_info: WindowInfo, visual_id: u32, - // FIXME: There's all this mouse cursor logic but it's never actually used, is this correct? mouse_cursor: MouseCursor, frame_interval: Duration, diff --git a/src/x11/xcb_connection.rs b/src/x11/xcb_connection.rs index 179e4c7..a11f140 100644 --- a/src/x11/xcb_connection.rs +++ b/src/x11/xcb_connection.rs @@ -19,7 +19,6 @@ pub struct XcbConnection { pub(crate) atoms: Atoms, - // FIXME: Same here, there's a ton of unused cursor machinery in here pub(super) cursor_cache: HashMap, }