Skip to content

Commit e294441

Browse files
committed
Add mouse hiding and more cursors for Cocoa
1 parent 677e69f commit e294441

File tree

1 file changed

+32
-20
lines changed

1 file changed

+32
-20
lines changed

src/cocoa/mod.rs

Lines changed: 32 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -630,30 +630,29 @@ impl Window {
630630

631631
pub fn set_cursor(&self, cursor: MouseCursor) {
632632
let cursor_name = match cursor {
633-
MouseCursor::Arrow => "arrowCursor",
633+
MouseCursor::Arrow | MouseCursor::Default => "arrowCursor",
634+
MouseCursor::Hand => "pointingHandCursor",
635+
MouseCursor::Grabbing | MouseCursor::Grab => "closedHandCursor",
634636
MouseCursor::Text => "IBeamCursor",
635-
MouseCursor::ContextMenu => "contextualMenuCursor",
637+
MouseCursor::VerticalText => "IBeamCursorForVerticalLayout",
636638
MouseCursor::Copy => "dragCopyCursor",
637-
MouseCursor::Crosshair => "crosshairCursor",
638-
MouseCursor::Default => "arrowCursor",
639-
MouseCursor::Grabbing => "openHandCursor",
640-
MouseCursor::Hand | MouseCursor::Grab => "pointingHandCursor",
641-
MouseCursor::NoDrop => "operationNotAllowedCursor",
642-
MouseCursor::NotAllowed => "operationNotAllowedCursor",
643639
MouseCursor::Alias => "dragLinkCursor",
644-
645-
646-
/// Resize cursors
647-
MouseCursor::EResize | MouseCursor::NResize |
648-
MouseCursor::NeResize | MouseCursor::NwResize |
649-
MouseCursor::SResize | MouseCursor::SeResize |
650-
MouseCursor::SwResize | MouseCursor::WResize |
651-
MouseCursor::EwResize | MouseCursor::ColResize |
652-
MouseCursor::NsResize | MouseCursor::RowResize |
653-
MouseCursor::NwseResize | MouseCursor::NeswResize => "arrowCursor",
640+
MouseCursor::NotAllowed | MouseCursor::NoDrop => "operationNotAllowedCursor",
641+
MouseCursor::ContextMenu => "contextualMenuCursor",
642+
MouseCursor::Crosshair => "crosshairCursor",
643+
MouseCursor::EResize => "resizeRightCursor",
644+
MouseCursor::NResize => "resizeUpCursor",
645+
MouseCursor::WResize => "resizeLeftCursor",
646+
MouseCursor::SResize => "resizeDownCursor",
647+
MouseCursor::EwResize | MouseCursor::ColResize => "resizeLeftRightCursor",
648+
MouseCursor::NsResize | MouseCursor::RowResize => "resizeUpDownCursor",
654649

655650
/// TODO: Find appropriate OSX cursors
656-
MouseCursor::Cell | MouseCursor::VerticalText | MouseCursor::NoneCursor |
651+
MouseCursor::NeResize | MouseCursor::NwResize |
652+
MouseCursor::SeResize | MouseCursor::SwResize |
653+
MouseCursor::NwseResize | MouseCursor::NeswResize |
654+
655+
MouseCursor::Cell | MouseCursor::NoneCursor |
657656
MouseCursor::Wait | MouseCursor::Progress | MouseCursor::Help |
658657
MouseCursor::Move | MouseCursor::AllScroll | MouseCursor::ZoomIn |
659658
MouseCursor::ZoomOut => "arrowCursor",
@@ -668,7 +667,20 @@ impl Window {
668667
}
669668

670669
pub fn set_cursor_state(&self, state: CursorState) -> Result<(), String> {
671-
unimplemented!();
670+
let cls = Class::get("NSCursor").unwrap();
671+
match state {
672+
CursorState::Normal => {
673+
let _: () = unsafe { msg_send![cls, unhide] };
674+
Ok(())
675+
},
676+
CursorState::Hide => {
677+
let _: () = unsafe { msg_send![cls, hide] };
678+
Ok(())
679+
},
680+
CursorState::Grab => {
681+
Err("Mouse grabbing is unimplemented".to_string())
682+
}
683+
}
672684
}
673685

674686
pub fn hidpi_factor(&self) -> f32 {

0 commit comments

Comments
 (0)