diff options
author | Andreas Kling <kling@serenityos.org> | 2021-05-01 18:50:01 +0200 |
---|---|---|
committer | Andreas Kling <kling@serenityos.org> | 2021-05-01 19:42:29 +0200 |
commit | 5b68a76c7792e58188f9834c67c7464c4052207b (patch) | |
tree | 7754909daeac0c8a6086813e8c29feea13af73ea /Userland/Libraries/LibGUI/TextDocument.cpp | |
parent | 443775754f89230d2eead0e629b7af4346b724fc (diff) | |
download | serenity-5b68a76c7792e58188f9834c67c7464c4052207b.zip |
LibGUI: Track modified state in GUI::TextDocument
Until now, this has been hackishly tracked by the TextEditor app's
main widget. Let's do it in GUI::TextDocument instead, so that anyone
who uses this class can know whether it's modified or not.
Diffstat (limited to 'Userland/Libraries/LibGUI/TextDocument.cpp')
-rw-r--r-- | Userland/Libraries/LibGUI/TextDocument.cpp | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/Userland/Libraries/LibGUI/TextDocument.cpp b/Userland/Libraries/LibGUI/TextDocument.cpp index 075265f2be..6e0d7728c4 100644 --- a/Userland/Libraries/LibGUI/TextDocument.cpp +++ b/Userland/Libraries/LibGUI/TextDocument.cpp @@ -26,6 +26,7 @@ TextDocument::TextDocument(Client* client) if (client) m_clients.set(client); append_line(make<TextDocumentLine>(*this)); + set_modified(false); // TODO: Instead of a repating timer, this we should call a delayed 2 sec timer when the user types. m_undo_timer = Core::Timer::construct( @@ -91,6 +92,9 @@ bool TextDocument::set_text(const StringView& text) client->document_did_set_text(); clear_text_guard.disarm(); + + // FIXME: Should the modified state be cleared on some of the earlier returns as well? + set_modified(false); return true; } @@ -305,6 +309,8 @@ void TextDocument::update_views(Badge<TextDocumentLine>) void TextDocument::notify_did_change() { + set_modified(true); + if (m_client_notifications_enabled) { for (auto* client : m_clients) client->document_did_change(); @@ -878,4 +884,9 @@ const TextDocumentSpan* TextDocument::span_at(const TextPosition& position) cons return nullptr; } +void TextDocument::set_modified(bool modified) +{ + m_modified = modified; +} + } |