From 8bc232e6be928812cb4f68538ae5331cbf61a686 Mon Sep 17 00:00:00 2001 From: huttongrabiel Date: Sun, 2 Apr 2023 16:32:23 -0700 Subject: [PATCH] Spreadsheet: Enable the ability to undo/redo changes in cell color Cells can be updated with new background/foreground colors and then this action can be undone/redone. --- .../Applications/Spreadsheet/SpreadsheetWidget.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/Userland/Applications/Spreadsheet/SpreadsheetWidget.cpp b/Userland/Applications/Spreadsheet/SpreadsheetWidget.cpp index d0499be60c..8d0b2abd5f 100644 --- a/Userland/Applications/Spreadsheet/SpreadsheetWidget.cpp +++ b/Userland/Applications/Spreadsheet/SpreadsheetWidget.cpp @@ -485,12 +485,18 @@ void SpreadsheetWidget::change_cell_static_color_format(Spreadsheet::FormatType auto dialog = GUI::ColorPicker::construct(Color::White, window(), "Select Color"); if (dialog->exec() == GUI::Dialog::ExecResult::OK) { + Vector cell_changes; for (auto& position : current_worksheet_if_available()->selected_cells()) { + auto* cell = current_worksheet_if_available()->at(position); + auto previous_type_metadata = cell->type_metadata(); if (format_type == Spreadsheet::FormatType::Background) - current_worksheet_if_available()->at(position)->type_metadata().static_format.background_color = dialog->color(); + cell->type_metadata().static_format.background_color = dialog->color(); else - current_worksheet_if_available()->at(position)->type_metadata().static_format.foreground_color = dialog->color(); + cell->type_metadata().static_format.foreground_color = dialog->color(); + cell_changes.append(CellChange(*cell, previous_type_metadata)); } + undo_stack().push(make(move(cell_changes))); + window()->set_modified(true); } }