diff options
Diffstat (limited to 'src/state/view')
| -rw-r--r-- | src/state/view/bar.rs | 3 | ||||
| -rw-r--r-- | src/state/view/mod.rs | 37 |
2 files changed, 13 insertions, 27 deletions
diff --git a/src/state/view/bar.rs b/src/state/view/bar.rs index 57898f5..f935de7 100644 --- a/src/state/view/bar.rs +++ b/src/state/view/bar.rs @@ -5,6 +5,5 @@ use super::mode::Mode; BarState!( SheetViewBarState, Mode, - GlobalState::instance().view.bar, - GlobalState::instance_mut().view.bar + GlobalState::get().view.bar ); diff --git a/src/state/view/mod.rs b/src/state/view/mod.rs index 961c4ca..41937a1 100644 --- a/src/state/view/mod.rs +++ b/src/state/view/mod.rs @@ -1,5 +1,3 @@ -use std::sync::{Arc, RwLock}; - use mlua::{IntoLua, UserData, Value}; use self::{bar::SheetViewBarState, mode::Mode}; @@ -37,24 +35,19 @@ impl SheetViewState { } } - pub fn set_active_sheet(&mut self, sheet: Option<SheetId>) { - if let Some(id) = sheet { - if let Some(lock) = Register::get(id) { - let sheet = lock.read().unwrap(); + pub fn set_active_sheet(&mut self, active: Option<SheetId>) { + if let Some(id) = active { + if let Some(sheet) = Register::get(id) { self.cursor.set_x_max(sheet.width() - 1); self.cursor.set_y_max(sheet.height() - 1); } } - self.active_sheet = sheet + self.active_sheet = active } - pub fn active_sheet(&self) -> Option<Arc<RwLock<Sheet>>> { - if let Some(id) = self.active_sheet { - Register::get(id) - } else { - None - } + pub fn active_sheet(&self) -> Option<&'static mut Sheet> { + Register::get(self.active_sheet?) } pub fn cancel_mode(&mut self) { @@ -121,13 +114,7 @@ impl SheetViewState { macro_rules! cfg { () => { - GlobalState::instance().view - }; -} - -macro_rules! cfg_mut { - () => { - GlobalState::instance_mut().view + GlobalState::get().view }; } @@ -143,9 +130,9 @@ impl UserData for SheetViewState { fields.add_field_function_set("active", |_, _, sheet: Option<SheetLuaRef>| { if let Some(r) = sheet { - cfg_mut!().active_sheet = Some(r.id()) + cfg!().active_sheet = Some(r.id()) } else { - cfg_mut!().active_sheet = None + cfg!().active_sheet = None } Ok(()) @@ -160,7 +147,7 @@ impl UserData for SheetViewState { fields.add_field_function_get("mode", |_, _| Ok(cfg!().mode)); fields.add_field_function_set("mode", |_, _, mode: Mode| { - let this = &mut cfg_mut!(); + let this = &mut cfg!(); match mode { Mode::Visual => match this.mode { Mode::Visual => {} @@ -177,12 +164,12 @@ impl UserData for SheetViewState { fn add_methods<'lua, M: mlua::prelude::LuaUserDataMethods<'lua, Self>>(methods: &mut M) { methods.add_function("move_cursor", |_, m: CursorMove| { - cfg_mut!().cursor.move_checked(m); + cfg!().cursor.move_checked(m); Ok(()) }); methods.add_function("cancel_mode", |_, _: ()| { - cfg_mut!().cancel_mode(); + cfg!().cancel_mode(); Ok(()) }) } |