Allow styling the cursor in MouseEventHandler

Co-Authored-By: Max Brunsfeld <max@zed.dev>
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
This commit is contained in:
Antonio Scandurra
2021-08-27 19:01:49 +02:00
co-authored by Max Brunsfeld Nathan Sobo
parent 53dc08dfc5
commit 5e6e0c68cd
6 changed files with 92 additions and 7 deletions
+15 -1
View File
@@ -1,6 +1,9 @@
use super::{BoolExt as _, Dispatcher, FontSystem, Window};
use crate::{
executor, keymap::Keystroke, platform, AnyAction, ClipboardItem, Event, Menu, MenuItem,
executor,
keymap::Keystroke,
platform::{self, CursorStyle},
AnyAction, ClipboardItem, Event, Menu, MenuItem,
};
use block::ConcreteBlock;
use cocoa::{
@@ -544,6 +547,17 @@ impl platform::Platform for MacPlatform {
Some((username.to_string(), password.bytes().to_vec()))
}
}
fn set_cursor_style(&self, style: CursorStyle) {
unsafe {
let cursor: id = match style {
CursorStyle::Arrow => msg_send![class!(NSCursor), arrowCursor],
CursorStyle::ResizeLeftRight => msg_send![class!(NSCursor), resizeLeftRightCursor],
CursorStyle::PointingHand => msg_send![class!(NSCursor), pointingHandCursor],
};
let _: () = msg_send![cursor, set];
}
}
}
unsafe fn get_foreground_platform(object: &mut Object) -> &MacForegroundPlatform {
+7
View File
@@ -1,3 +1,4 @@
use super::CursorStyle;
use crate::{AnyAction, ClipboardItem};
use parking_lot::Mutex;
use pathfinder_geometry::vector::Vector2F;
@@ -13,6 +14,7 @@ pub struct Platform {
dispatcher: Arc<dyn super::Dispatcher>,
fonts: Arc<dyn super::FontSystem>,
current_clipboard_item: Mutex<Option<ClipboardItem>>,
cursor: Mutex<CursorStyle>,
}
#[derive(Default)]
@@ -84,6 +86,7 @@ impl Platform {
dispatcher: Arc::new(Dispatcher),
fonts: Arc::new(super::current::FontSystem::new()),
current_clipboard_item: Default::default(),
cursor: Mutex::new(CursorStyle::Arrow),
}
}
}
@@ -129,6 +132,10 @@ impl super::Platform for Platform {
fn read_credentials(&self, _: &str) -> Option<(String, Vec<u8>)> {
None
}
fn set_cursor_style(&self, style: CursorStyle) {
*self.cursor.lock() = style;
}
}
impl Window {