Spreadsheet: Add CellChange constructor for changes in type metadata

Allows the creation of CellChanges where the change is in the type
metadata instead of in data.
This commit is contained in:
huttongrabiel 2023-04-02 16:26:54 -07:00 committed by Sam Atkins
parent cd33f271b1
commit 40725c7c8c
4 changed files with 18 additions and 0 deletions

View file

@ -62,6 +62,11 @@ void Cell::set_type(StringView name)
VERIFY_NOT_REACHED();
}
void Cell::set_type_metadata(CellTypeMetadata const& metadata)
{
m_type_metadata = metadata;
}
void Cell::set_type_metadata(CellTypeMetadata&& metadata)
{
m_type_metadata = move(metadata);

View file

@ -74,6 +74,7 @@ struct Cell : public Weakable<Cell> {
void set_type(StringView name);
void set_type(CellType const*);
void set_type_metadata(CellTypeMetadata const&);
void set_type_metadata(CellTypeMetadata&&);
Position const& position() const { return m_position; }

View file

@ -770,4 +770,11 @@ CellChange::CellChange(Cell& cell, DeprecatedString const& previous_data)
m_new_data = cell.data();
}
CellChange::CellChange(Cell& cell, CellTypeMetadata const& previous_type_metadata)
: m_cell(cell)
, m_previous_type_metadata(previous_type_metadata)
{
m_new_type_metadata = cell.type_metadata();
}
}

View file

@ -25,15 +25,20 @@ namespace Spreadsheet {
class CellChange {
public:
CellChange(Cell&, DeprecatedString const&);
CellChange(Cell&, CellTypeMetadata const&);
auto& cell() { return m_cell; }
auto& previous_data() { return m_previous_data; }
auto& new_data() { return m_new_data; }
auto& previous_type_metadata() { return m_previous_type_metadata; }
auto& new_type_metadata() { return m_new_type_metadata; }
private:
Cell& m_cell;
DeprecatedString m_previous_data;
DeprecatedString m_new_data;
CellTypeMetadata m_previous_type_metadata;
CellTypeMetadata m_new_type_metadata;
};
class Sheet : public Core::Object {