diff options
Diffstat (limited to 'src/win32')
| -rw-r--r-- | src/win32/mod.rs | 13 | 
1 files changed, 11 insertions, 2 deletions
| diff --git a/src/win32/mod.rs b/src/win32/mod.rs index 113bea1..c0708b8 100644 --- a/src/win32/mod.rs +++ b/src/win32/mod.rs @@ -262,7 +262,12 @@ impl Window {      pub fn set_cursor_state(&self, state: CursorState) -> Result<(), String> {          let mut current_state = self.cursor_state.lock().unwrap(); -        match (state, *current_state) { +        let foreground_thread_id = unsafe { user32::GetWindowThreadProcessId(self.window.0, ptr::null_mut()) }; +        let current_thread_id = unsafe { kernel32::GetCurrentThreadId() }; + +        unsafe { user32::AttachThreadInput(foreground_thread_id, current_thread_id, 1) }; + +        let res = match (state, *current_state) {              (CursorState::Normal, CursorState::Normal) => Ok(()),              (CursorState::Hide, CursorState::Hide) => Ok(()),              (CursorState::Grab, CursorState::Grab) => Ok(()), @@ -310,7 +315,11 @@ impl Window {              },              _ => unimplemented!(), -        } +        }; + +        unsafe { user32::AttachThreadInput(foreground_thread_id, current_thread_id, 0) }; + +        res      }      pub fn hidpi_factor(&self) -> f32 { | 
