Fix difficult grabbing after closing via button

Former-commit-id: 2649d9e210d375f19d2970f15614be23d5173c67
This commit is contained in:
Imbris 2019-05-25 08:59:25 -04:00
parent 3daec2cb17
commit 9edcabc679

View File

@ -140,15 +140,20 @@ pub struct Show {
want_grab: bool, want_grab: bool,
} }
impl Show { impl Show {
fn toggle_bag(&mut self) { fn bag(&mut self, open: bool) {
self.bag = !self.bag; self.bag = open;
self.want_grab = !self.bag; self.want_grab = !open;
} }
fn toggle_bag(&mut self) {
fn toggle_map(&mut self) { self.bag(!self.bag);
self.map = !self.map; }
fn map(&mut self, open: bool) {
self.map = open;
self.bag = false; self.bag = false;
self.want_grab = !self.map; self.want_grab = !open;
}
fn toggle_map(&mut self) {
self.map(!self.map)
} }
fn toggle_mini_map(&mut self) { fn toggle_mini_map(&mut self) {
@ -179,13 +184,20 @@ impl Show {
} }
} }
fn toggle_settings(&mut self) { fn settings(&mut self, open: bool) {
self.open_windows = match self.open_windows { self.open_windows = if open {
Windows::Settings => Windows::None, Windows::Settings
_ => Windows::Settings, } else {
Windows::None
}; };
self.bag = false; self.bag = false;
self.want_grab = self.open_windows != Windows::Settings; self.want_grab = !open;
}
fn toggle_settings(&mut self) {
match self.open_windows {
Windows::Settings => self.settings(false),
_ => self.settings(true),
};
} }
fn toggle_help(&mut self) { fn toggle_help(&mut self) {
@ -453,7 +465,10 @@ impl Hud {
match Bag::new(self.inventory_space, &self.imgs, &self.fonts) match Bag::new(self.inventory_space, &self.imgs, &self.fonts)
.set(self.ids.bag, ui_widgets) .set(self.ids.bag, ui_widgets)
{ {
Some(bag::Event::Close) => self.show.bag = false, Some(bag::Event::Close) => {
self.show.bag(false);
self.force_ungrab = true;
}
None => {} None => {}
} }
} }
@ -499,7 +514,10 @@ impl Hud {
self.show.inventory_test_button = !self.show.inventory_test_button self.show.inventory_test_button = !self.show.inventory_test_button
} }
settings_window::Event::ToggleDebug => self.show.debug = !self.show.debug, settings_window::Event::ToggleDebug => self.show.debug = !self.show.debug,
settings_window::Event::Close => self.show.open_windows = Windows::None, settings_window::Event::Close => {
self.show.settings(false);
self.force_ungrab = true;
}
settings_window::Event::AdjustViewDistance(view_distance) => { settings_window::Event::AdjustViewDistance(view_distance) => {
events.push(Event::AdjustViewDistance(view_distance)); events.push(Event::AdjustViewDistance(view_distance));
} }
@ -547,7 +565,10 @@ impl Hud {
// Map // Map
if self.show.map { if self.show.map {
match Map::new(&self.imgs, &self.fonts).set(self.ids.map, ui_widgets) { match Map::new(&self.imgs, &self.fonts).set(self.ids.map, ui_widgets) {
Some(map::Event::Close) => self.show.map = false, Some(map::Event::Close) => {
self.show.map(false);
self.force_ungrab = true;
}
None => {} None => {}
} }
} }
@ -559,7 +580,11 @@ impl Hud {
self.show.esc_menu = false; self.show.esc_menu = false;
self.show.open_windows = Windows::Settings; self.show.open_windows = Windows::Settings;
} }
Some(esc_menu::Event::Close) => self.show.esc_menu = false, Some(esc_menu::Event::Close) => {
self.show.esc_menu = false;
self.show.want_grab = false;
self.force_ungrab = true;
}
Some(esc_menu::Event::Logout) => events.push(Event::Logout), Some(esc_menu::Event::Logout) => events.push(Event::Logout),
Some(esc_menu::Event::Quit) => events.push(Event::Quit), Some(esc_menu::Event::Quit) => events.push(Event::Quit),
None => {} None => {}