1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-26 08:27:45 +00:00

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(); VERIFY_NOT_REACHED();
} }
void Cell::set_type_metadata(CellTypeMetadata const& metadata)
{
m_type_metadata = metadata;
}
void Cell::set_type_metadata(CellTypeMetadata&& metadata) void Cell::set_type_metadata(CellTypeMetadata&& metadata)
{ {
m_type_metadata = move(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(StringView name);
void set_type(CellType const*); void set_type(CellType const*);
void set_type_metadata(CellTypeMetadata const&);
void set_type_metadata(CellTypeMetadata&&); void set_type_metadata(CellTypeMetadata&&);
Position const& position() const { return m_position; } 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(); 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 { class CellChange {
public: public:
CellChange(Cell&, DeprecatedString const&); CellChange(Cell&, DeprecatedString const&);
CellChange(Cell&, CellTypeMetadata const&);
auto& cell() { return m_cell; } auto& cell() { return m_cell; }
auto& previous_data() { return m_previous_data; } auto& previous_data() { return m_previous_data; }
auto& new_data() { return m_new_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: private:
Cell& m_cell; Cell& m_cell;
DeprecatedString m_previous_data; DeprecatedString m_previous_data;
DeprecatedString m_new_data; DeprecatedString m_new_data;
CellTypeMetadata m_previous_type_metadata;
CellTypeMetadata m_new_type_metadata;
}; };
class Sheet : public Core::Object { class Sheet : public Core::Object {