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

LibGUI: Use UndoStack::on_state_change inside TextDocument/TextEditor

Have TextDocument listen for state changes on the internal undo stack,
and forward those to all clients via a new virtual function.

This simplifies updating the can_undo / can_redo states of TextEditor.
This commit is contained in:
Andreas Kling 2021-05-08 13:16:37 +02:00
parent 0cb6103928
commit ee19f7c0aa
5 changed files with 17 additions and 2 deletions

View file

@ -28,6 +28,13 @@ TextDocument::TextDocument(Client* client)
append_line(make<TextDocumentLine>(*this));
set_unmodified();
m_undo_stack.on_state_change = [this] {
if (m_client_notifications_enabled) {
for (auto* client : m_clients)
client->document_did_update_undo_stack();
}
};
m_undo_timer = Core::Timer::create_single_shot(
2000, [this] {
update_undo();
@ -694,6 +701,7 @@ void TextDocument::redo()
void TextDocument::add_to_undo_stack(NonnullOwnPtr<TextDocumentUndoCommand> undo_command)
{
m_undo_stack.push(move(undo_command));
notify_did_change();
}
TextDocumentUndoCommand::TextDocumentUndoCommand(TextDocument& document)