diff --git a/Userland/Applications/Spreadsheet/SpreadsheetModel.cpp b/Userland/Applications/Spreadsheet/SpreadsheetModel.cpp index 80254b40e7..9693de25f4 100644 --- a/Userland/Applications/Spreadsheet/SpreadsheetModel.cpp +++ b/Userland/Applications/Spreadsheet/SpreadsheetModel.cpp @@ -221,4 +221,23 @@ void CellsUndoCommand::redo() } } +CellsUndoMetadataCommand::CellsUndoMetadataCommand(Vector cell_changes) +{ + m_cell_changes = move(cell_changes); +} + +void CellsUndoMetadataCommand::undo() +{ + for (size_t i = 0; i < m_cell_changes.size(); ++i) { + m_cell_changes[i].cell().set_type_metadata(m_cell_changes[i].previous_type_metadata()); + } +} + +void CellsUndoMetadataCommand::redo() +{ + for (size_t i = 0; i < m_cell_changes.size(); ++i) { + m_cell_changes[i].cell().set_type_metadata(m_cell_changes[i].new_type_metadata()); + } +} + } diff --git a/Userland/Applications/Spreadsheet/SpreadsheetModel.h b/Userland/Applications/Spreadsheet/SpreadsheetModel.h index 346a9bbdea..4227e401e5 100644 --- a/Userland/Applications/Spreadsheet/SpreadsheetModel.h +++ b/Userland/Applications/Spreadsheet/SpreadsheetModel.h @@ -58,4 +58,15 @@ private: Vector m_cell_changes; }; +class CellsUndoMetadataCommand : public GUI::Command { +public: + CellsUndoMetadataCommand(Vector); + + virtual void undo() override; + virtual void redo() override; + +private: + Vector m_cell_changes; +}; + }