[studio,nostalgia] Fix PaletteEditor color update command merging, add setObsolete
This commit is contained in:
@ -17,13 +17,22 @@ class NoChangesException: public ox::Exception {
|
||||
};
|
||||
|
||||
class UndoCommand {
|
||||
private:
|
||||
bool m_obsolete{};
|
||||
public:
|
||||
virtual ~UndoCommand() noexcept = default;
|
||||
virtual ox::Error redo() noexcept = 0;
|
||||
virtual ox::Error undo() noexcept = 0;
|
||||
[[nodiscard]]
|
||||
virtual int commandId() const noexcept = 0;
|
||||
virtual bool mergeWith(UndoCommand const&cmd) noexcept;
|
||||
virtual bool mergeWith(UndoCommand &cmd) noexcept;
|
||||
constexpr void setObsolete(bool obsolete) noexcept {
|
||||
m_obsolete = obsolete;
|
||||
}
|
||||
[[nodiscard]]
|
||||
constexpr bool isObsolete() const noexcept {
|
||||
return m_obsolete;
|
||||
}
|
||||
};
|
||||
|
||||
}
|
||||
|
@ -3,7 +3,7 @@
|
||||
|
||||
namespace studio {
|
||||
|
||||
bool UndoCommand::mergeWith(UndoCommand const&) noexcept {
|
||||
bool UndoCommand::mergeWith(UndoCommand&) noexcept {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -17,6 +17,10 @@ ox::Error UndoStack::push(ox::UPtr<UndoCommand> &&cmd) noexcept {
|
||||
m_stack.emplace_back(std::move(cmd));
|
||||
++m_stackIdx;
|
||||
}
|
||||
if ((*m_stack.back().unwrap())->isObsolete()) {
|
||||
m_stack.pop_back();
|
||||
--m_stackIdx;
|
||||
}
|
||||
return {};
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user