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()
|
.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]
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue