FIX: Don not clone Locales and Languages, pass them by reference

This commit is contained in:
Nicolás Hatcher
2025-12-14 16:55:14 +01:00
parent ffe5d1a158
commit 96a5482e01
84 changed files with 308 additions and 251 deletions

View File

@@ -10,7 +10,7 @@ use crate::model::Model;
// In IronCalc, if one of the edges of the range is deleted will replace the edge with #REF!
// I feel this is unimportant for now.
impl Model {
impl<'a> Model<'a> {
fn shift_cell_formula(
&mut self,
sheet: u32,
@@ -31,7 +31,7 @@ impl Model {
column,
};
// FIXME: This is not a very performant way if the formula has changed :S.
let formula = to_localized_string(node, &cell_reference, &self.locale, &self.language);
let formula = to_localized_string(node, &cell_reference, self.locale, self.language);
let formula_displaced = to_string_displaced(node, &cell_reference, displace_data);
if formula != formula_displaced {
self.update_cell_with_formula(sheet, row, column, format!("={formula_displaced}"))?;
@@ -111,7 +111,7 @@ impl Model {
let formula_or_value = self
.get_cell_formula(sheet, source_row, source_column)?
.unwrap_or_else(|| {
source_cell.get_localized_text(&self.workbook.shared_strings, &self.language)
source_cell.get_localized_text(&self.workbook.shared_strings, self.language)
});
self.set_user_input(sheet, target_row, target_column, formula_or_value)?;
self.workbook
@@ -497,7 +497,7 @@ impl Model {
let formula_or_value =
self.get_cell_formula(sheet, r.row, column)?
.unwrap_or_else(|| {
cell.get_localized_text(&self.workbook.shared_strings, &self.language)
cell.get_localized_text(&self.workbook.shared_strings, self.language)
});
original_cells.push((r.row, formula_or_value, style_idx));
self.cell_clear_all(sheet, r.row, column)?;
@@ -584,7 +584,7 @@ impl Model {
.ok_or("Expected Cell to exist")?;
let style_idx = cell.get_style();
let formula_or_value = self.get_cell_formula(sheet, row, *c)?.unwrap_or_else(|| {
cell.get_localized_text(&self.workbook.shared_strings, &self.language)
cell.get_localized_text(&self.workbook.shared_strings, self.language)
});
original_cells.push((*c, formula_or_value, style_idx));
self.cell_clear_all(sheet, row, *c)?;