mirror of
https://github.com/rust-windowing/winit.git
synced 2026-09-01 14:20:05 -04:00
MacOS: check if cursor changed before applying (#3324)
This commit is contained in:
@@ -841,6 +841,10 @@ impl WinitView {
|
|||||||
.unwrap_or_default()
|
.unwrap_or_default()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub(super) fn cursor_icon(&self) -> Id<NSCursor> {
|
||||||
|
self.ivars().cursor_state.borrow().cursor.clone()
|
||||||
|
}
|
||||||
|
|
||||||
pub(super) fn set_cursor_icon(&self, icon: Id<NSCursor>) {
|
pub(super) fn set_cursor_icon(&self, icon: Id<NSCursor>) {
|
||||||
let mut cursor_state = self.ivars().cursor_state.borrow_mut();
|
let mut cursor_state = self.ivars().cursor_state.borrow_mut();
|
||||||
cursor_state.cursor = icon;
|
cursor_state.cursor = icon;
|
||||||
|
|||||||
@@ -798,18 +798,19 @@ impl WinitWindow {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub fn set_cursor(&self, cursor: Cursor) {
|
pub fn set_cursor(&self, cursor: Cursor) {
|
||||||
match cursor {
|
let view = self.view();
|
||||||
Cursor::Icon(icon) => {
|
|
||||||
let view = self.view();
|
let cursor = match cursor {
|
||||||
view.set_cursor_icon(cursor_from_icon(icon));
|
Cursor::Icon(icon) => cursor_from_icon(icon),
|
||||||
self.invalidateCursorRectsForView(&view);
|
Cursor::Custom(cursor) => cursor.inner.0,
|
||||||
}
|
};
|
||||||
Cursor::Custom(cursor) => {
|
|
||||||
let view = self.view();
|
if view.cursor_icon() == cursor {
|
||||||
view.set_cursor_icon(cursor.inner.0.clone());
|
return;
|
||||||
self.invalidateCursorRectsForView(&view);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
view.set_cursor_icon(cursor);
|
||||||
|
self.invalidateCursorRectsForView(&view);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[inline]
|
#[inline]
|
||||||
|
|||||||
Reference in New Issue
Block a user