FIX: Forces calculation after insert/delete columns/rows

This commit is contained in:
Nicolás Hatcher
2025-02-15 11:08:18 +01:00
committed by Nicolás Hatcher Andrés
parent 74be62823d
commit 91984dc920
2 changed files with 51 additions and 4 deletions

View File

@@ -172,3 +172,42 @@ fn row_heigh_increases_automatically() {
.unwrap();
assert_eq!(model.get_row_height(0, 1), Ok(2.0 * DEFAULT_ROW_HEIGHT));
}
#[test]
fn insert_row_evaluates() {
let model = new_empty_model();
let mut model = UserModel::from_model(model);
model.set_user_input(0, 1, 1, "42").unwrap();
model.set_user_input(0, 1, 2, "=A1*2").unwrap();
assert!(model.insert_row(0, 1).is_ok());
assert_eq!(model.get_formatted_cell_value(0, 2, 2).unwrap(), "84");
model.undo().unwrap();
assert_eq!(model.get_formatted_cell_value(0, 1, 2).unwrap(), "84");
model.redo().unwrap();
assert_eq!(model.get_formatted_cell_value(0, 2, 2).unwrap(), "84");
model.delete_row(0, 1).unwrap();
assert_eq!(model.get_formatted_cell_value(0, 1, 2).unwrap(), "84");
assert_eq!(model.get_cell_content(0, 1, 2).unwrap(), "=A1*2");
}
#[test]
fn insert_column_evaluates() {
let model = new_empty_model();
let mut model = UserModel::from_model(model);
model.set_user_input(0, 1, 1, "42").unwrap();
model.set_user_input(0, 10, 1, "=A1*2").unwrap();
assert!(model.insert_column(0, 1).is_ok());
assert_eq!(model.get_formatted_cell_value(0, 10, 2).unwrap(), "84");
model.undo().unwrap();
assert_eq!(model.get_formatted_cell_value(0, 10, 1).unwrap(), "84");
model.redo().unwrap();
assert_eq!(model.get_formatted_cell_value(0, 10, 2).unwrap(), "84");
model.delete_column(0, 1).unwrap();
assert_eq!(model.get_formatted_cell_value(0, 10, 1).unwrap(), "84");
assert_eq!(model.get_cell_content(0, 10, 1).unwrap(), "=A1*2");
}

View File

@@ -843,7 +843,9 @@ impl UserModel {
pub fn insert_row(&mut self, sheet: u32, row: i32) -> Result<(), String> {
let diff_list = vec![Diff::InsertRow { sheet, row }];
self.push_diff_list(diff_list);
self.model.insert_rows(sheet, row, 1)
self.model.insert_rows(sheet, row, 1)?;
self.evaluate_if_not_paused();
Ok(())
}
/// Deletes a row
@@ -873,7 +875,9 @@ impl UserModel {
old_data,
}];
self.push_diff_list(diff_list);
self.model.delete_rows(sheet, row, 1)
self.model.delete_rows(sheet, row, 1)?;
self.evaluate_if_not_paused();
Ok(())
}
/// Inserts a column
@@ -883,7 +887,9 @@ impl UserModel {
pub fn insert_column(&mut self, sheet: u32, column: i32) -> Result<(), String> {
let diff_list = vec![Diff::InsertColumn { sheet, column }];
self.push_diff_list(diff_list);
self.model.insert_columns(sheet, column, 1)
self.model.insert_columns(sheet, column, 1)?;
self.evaluate_if_not_paused();
Ok(())
}
/// Deletes a column
@@ -928,7 +934,9 @@ impl UserModel {
}),
}];
self.push_diff_list(diff_list);
self.model.delete_columns(sheet, column, 1)
self.model.delete_columns(sheet, column, 1)?;
self.evaluate_if_not_paused();
Ok(())
}
/// Sets the width of a column