diff --git a/imgui/src/context.rs b/imgui/src/context.rs index 19afb28..c1c1176 100644 --- a/imgui/src/context.rs +++ b/imgui/src/context.rs @@ -9,8 +9,8 @@ use crate::clipboard::{ClipboardBackend, ClipboardContext}; use crate::fonts::atlas::{FontAtlas, FontId, SharedFontAtlas}; use crate::io::Io; use crate::style::Style; -use crate::Ui; use crate::{sys, DrawData}; +use crate::{MouseCursor, Ui}; /// An imgui-rs context. /// @@ -543,4 +543,28 @@ impl Context { &*(sys::igGetDrawData() as *mut DrawData) } } + + /// Returns the currently desired mouse cursor type. + /// + /// This was set *last frame* by the [Ui] object, and will be reset when + /// [new_frame] is called. + /// + /// Returns `None` if no cursor should be displayed + /// + /// [new_frame]: Self::new_frame + #[doc(alias = "GetMouseCursor")] + pub fn mouse_cursor(&self) -> Option { + match unsafe { sys::igGetMouseCursor() } { + sys::ImGuiMouseCursor_Arrow => Some(MouseCursor::Arrow), + sys::ImGuiMouseCursor_TextInput => Some(MouseCursor::TextInput), + sys::ImGuiMouseCursor_ResizeAll => Some(MouseCursor::ResizeAll), + sys::ImGuiMouseCursor_ResizeNS => Some(MouseCursor::ResizeNS), + sys::ImGuiMouseCursor_ResizeEW => Some(MouseCursor::ResizeEW), + sys::ImGuiMouseCursor_ResizeNESW => Some(MouseCursor::ResizeNESW), + sys::ImGuiMouseCursor_ResizeNWSE => Some(MouseCursor::ResizeNWSE), + sys::ImGuiMouseCursor_Hand => Some(MouseCursor::Hand), + sys::ImGuiMouseCursor_NotAllowed => Some(MouseCursor::NotAllowed), + _ => None, + } + } }