Refactor cell marking, add undo, update keybindings

CellWidget::set_selected and set_marked now return &mut Self for method
chaining. Added BoardState::undo_marked_cell to remove the last marked
cell and restore focus. Backspace triggers undo, Delete clears marking.
This commit is contained in:
2026-04-13 16:57:44 +02:00
parent d5f4d03264
commit 1393f282e8
6 changed files with 74 additions and 34 deletions
+8 -5
View File
@@ -48,8 +48,9 @@ impl CellWidget {
}
}
pub fn set_selected(&mut self, selected: bool) {
pub fn set_selected(&mut self, selected: bool) -> &mut Self {
self.selected = selected;
self
}
pub fn set_zoom_level(&mut self, zoom_level: ZoomLevel) {
@@ -64,8 +65,9 @@ impl CellWidget {
self.marked
}
pub fn set_marked(&mut self, marked: bool) {
self.marked = marked
pub fn set_marked(&mut self, marked: bool) -> &mut Self {
self.marked = marked;
self
}
fn col_to_letters(&self) -> String {
@@ -90,8 +92,9 @@ impl CellWidget {
fn fg_color(&self) -> Color {
match self.tag {
_ if self.marked => Color::LightMagenta,
_ if self.selected => Color::LightYellow,
_ if self.marked && self.selected => Color::Magenta,
_ if self.marked && !self.selected => Color::LightMagenta,
_ if self.selected && !self.marked => Color::LightYellow,
CellTag::Base(Players::Player) if !self.selected => Color::LightBlue,
CellTag::Base(Players::Enemy) if !self.selected => Color::LightRed,
CellTag::Tunel if !self.selected => Color::Gray,