From e8cf815143524360412a357d82ed641d7d396239 Mon Sep 17 00:00:00 2001 From: timokoesters Date: Thu, 9 May 2019 10:55:32 +0200 Subject: [PATCH] Force ungrab on Key::ToggleCursor Former-commit-id: 222f5693363662d25cb065fdc104cd079e2c395d --- voxygen/src/hud/mod.rs | 15 +++++++++++++-- voxygen/src/session.rs | 6 ------ 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/voxygen/src/hud/mod.rs b/voxygen/src/hud/mod.rs index cd1828b4e7..204d956591 100644 --- a/voxygen/src/hud/mod.rs +++ b/voxygen/src/hud/mod.rs @@ -201,6 +201,7 @@ pub struct Hud { show: Show, to_focus: Option>, settings: Settings, + force_ungrab: bool, } impl Hud { @@ -236,6 +237,7 @@ impl Hud { }, to_focus: None, settings, + force_ungrab: false, } } @@ -520,6 +522,13 @@ impl Hud { self.show.toggle_help(); true } + Key::ToggleCursor => { + self.force_ungrab = !self.force_ungrab; + if self.force_ungrab { + global_state.window.grab_cursor(false); + } + true + } _ => false, }, WinEvent::KeyDown(key) | WinEvent::KeyUp(key) => match key { @@ -534,8 +543,10 @@ impl Hud { _ => false, }; // Handle cursor grab - if let Some(state) = self.show.want_grab.take() { - global_state.window.grab_cursor(state); + if !self.force_ungrab { + if let Some(state) = self.show.want_grab.take() { + global_state.window.grab_cursor(state); + } } handled diff --git a/voxygen/src/session.rs b/voxygen/src/session.rs index cc8d071043..d1b9de0361 100644 --- a/voxygen/src/session.rs +++ b/voxygen/src/session.rs @@ -127,12 +127,6 @@ impl PlayState for SessionState { Event::Close => { return PlayStateResult::Shutdown; } - // Toggle cursor grabbing - Event::KeyDown(Key::ToggleCursor) => { - global_state - .window - .grab_cursor(!global_state.window.is_cursor_grabbed()); - } // Movement Key Pressed Event::KeyDown(Key::MoveForward) => self.key_state.up = true, Event::KeyDown(Key::MoveBack) => self.key_state.down = true,