1use super::*;
2
3#[derive(Debug, PartialEq, Eq, Hash, Clone, Copy)]
4pub enum CursorType {
5 Default,
6 Pointer,
7 Drag,
8 None,
9}
10
11impl Window {
12 pub fn set_cursor_type(&self, cursor_type: CursorType) {
13 self.inner.cursor_type.set(cursor_type);
14 if self.cursor_locked() {
15 return;
16 }
17 self.inner.backend.set_cursor_type(cursor_type);
18 }
19
20 pub fn cursor_position(&self) -> Option<vec2<f64>> {
21 if self.cursor_locked() {
22 return None;
23 }
24 self.inner.cursor_pos.get()
25 }
26
27 pub fn cursor_locked(&self) -> bool {
28 self.inner.backend.cursor_locked()
29 }
30
31 pub fn lock_cursor(&self) {
32 self.inner.backend.lock_cursor();
33 self.inner.backend.set_cursor_type(CursorType::None);
34 }
35
36 pub fn unlock_cursor(&self) {
37 self.inner.backend.unlock_cursor();
38 self.inner
39 .backend
40 .set_cursor_type(self.inner.cursor_type.get());
41 }
42}