summaryrefslogtreecommitdiff
path: root/Userland/Libraries/LibGUI/TextDocument.cpp
diff options
context:
space:
mode:
authorAndreas Kling <kling@serenityos.org>2021-05-01 18:50:01 +0200
committerAndreas Kling <kling@serenityos.org>2021-05-01 19:42:29 +0200
commit5b68a76c7792e58188f9834c67c7464c4052207b (patch)
tree7754909daeac0c8a6086813e8c29feea13af73ea /Userland/Libraries/LibGUI/TextDocument.cpp
parent443775754f89230d2eead0e629b7af4346b724fc (diff)
downloadserenity-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.cpp11
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;
+}
+
}