summaryrefslogtreecommitdiff
path: root/src/state/view
diff options
context:
space:
mode:
authorNathan Reiner <nathan@nathanreiner.xyz>2024-08-10 19:06:46 +0200
committerNathan Reiner <nathan@nathanreiner.xyz>2024-08-10 19:06:46 +0200
commit63cfcbe7a7745b276de58ec92e0141b958c44feb (patch)
tree990e33a83756e27187033579ee2f85d5c79169d5 /src/state/view
parentb747ca8af52129876b577a4f20f7105a05c6b002 (diff)
use unsafe blocks instead of mutexes
Diffstat (limited to 'src/state/view')
-rw-r--r--src/state/view/bar.rs3
-rw-r--r--src/state/view/mod.rs37
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(())
})
}