1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-25 17:37:37 +00:00

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.
This commit is contained in:
huttongrabiel 2023-04-02 16:32:23 -07:00 committed by Sam Atkins
parent 7c204745ee
commit 8bc232e6be

View file

@ -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<CellChange> 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<CellsUndoMetadataCommand>(move(cell_changes)));
window()->set_modified(true);
}
}