MacOS: check if cursor changed before applying (#3324)
This commit is contained in:
parent
a87cfb62c3
commit
f5c691467b
2 changed files with 16 additions and 11 deletions
|
|
@ -841,6 +841,10 @@ impl WinitView {
|
|||
.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>) {
|
||||
let mut cursor_state = self.ivars().cursor_state.borrow_mut();
|
||||
cursor_state.cursor = icon;
|
||||
|
|
|
|||
|
|
@ -798,18 +798,19 @@ impl WinitWindow {
|
|||
}
|
||||
|
||||
pub fn set_cursor(&self, cursor: Cursor) {
|
||||
match cursor {
|
||||
Cursor::Icon(icon) => {
|
||||
let view = self.view();
|
||||
view.set_cursor_icon(cursor_from_icon(icon));
|
||||
self.invalidateCursorRectsForView(&view);
|
||||
}
|
||||
Cursor::Custom(cursor) => {
|
||||
let view = self.view();
|
||||
view.set_cursor_icon(cursor.inner.0.clone());
|
||||
self.invalidateCursorRectsForView(&view);
|
||||
}
|
||||
let view = self.view();
|
||||
|
||||
let cursor = match cursor {
|
||||
Cursor::Icon(icon) => cursor_from_icon(icon),
|
||||
Cursor::Custom(cursor) => cursor.inner.0,
|
||||
};
|
||||
|
||||
if view.cursor_icon() == cursor {
|
||||
return;
|
||||
}
|
||||
|
||||
view.set_cursor_icon(cursor);
|
||||
self.invalidateCursorRectsForView(&view);
|
||||
}
|
||||
|
||||
#[inline]
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue