// Platform-specific cursor handling // Common types for cursor handling pub mod types; // Shared stub implementations for unimplemented platforms mod stub_impl; // Windows implementation #[cfg(target_os = "windows")] mod windows; // macOS implementation #[cfg(target_os = "macos")] mod macos; // Linux implementation #[cfg(target_os = "linux")] mod linux; use anyhow::Result; use image::RgbaImage; // Platform-agnostic interface for cursor handling #[cfg(target_os = "windows")] pub use self::windows::{set_cursor, restore_default_cursor, restore_default_cursor_temporarily, init}; #[cfg(target_os = "macos")] pub use self::macos::{set_cursor, restore_default_cursor, init}; #[cfg(target_os = "linux")] pub use self::linux::{set_cursor, restore_default_cursor, init}; // Initialize platform-specific cursor handling pub fn initialize() -> Result<()> { #[cfg(target_os = "windows")] { init() } #[cfg(not(target_os = "windows"))] { Ok(()) } } // Cross-platform implementation for setting cursor pub fn set_system_cursor(image: &RgbaImage) -> Result<()> { set_cursor(image) } // Cross-platform implementation for restoring default cursor pub fn restore_system_cursor() -> Result<()> { println!("Restoring system cursor"); restore_default_cursor() } // Cross-platform implementation for temporarily restoring default cursor pub fn restore_system_cursor_temporarily() -> Result<()> { println!("Temporarily restoring system cursor"); #[cfg(target_os = "windows")] { restore_default_cursor_temporarily() } #[cfg(not(target_os = "windows"))] { // For non-Windows platforms, just use the regular restore for now restore_default_cursor() } } // Default implementations for non-supported platforms #[cfg(not(any(target_os = "windows", target_os = "macos", target_os = "linux")))] pub fn set_cursor(_path: &str) -> Result<()> { Err("Cursor customization not supported on this platform".to_string()) } #[cfg(not(any(target_os = "windows", target_os = "macos", target_os = "linux")))] pub fn restore_default_cursor() -> Result<()> { Err("Cursor restoration not supported on this platform".to_string()) }