diff options
author | Sasan Hezarkhani <gootik_2003@hotmail.com> | 2019-12-04 22:57:54 -0800 |
---|---|---|
committer | Andreas Kling <awesomekling@gmail.com> | 2019-12-06 19:45:13 +0100 |
commit | 8cea5c053d6faa6f0a219246d2428b40be5488d9 (patch) | |
tree | 08714c29fb8ca0fae693aa063913d750c6c834f0 /Applications/TextEditor | |
parent | f93c0dc4894546ec71fe9677f7eaab153708ba0c (diff) | |
download | serenity-8cea5c053d6faa6f0a219246d2428b40be5488d9.zip |
TextEditor: `Fix bug when document is marked dirty on open.
Currently, when `set_text()` is called on GTextDocument a change is
triggered and all clients registered get a document_did_set_text
call. This in turn causes the TextEditorWidget to mark the document
as dirty even on the first open, which makes for a weird experience.
Diffstat (limited to 'Applications/TextEditor')
-rw-r--r-- | Applications/TextEditor/TextEditorWidget.cpp | 10 | ||||
-rw-r--r-- | Applications/TextEditor/TextEditorWidget.h | 1 |
2 files changed, 10 insertions, 1 deletions
diff --git a/Applications/TextEditor/TextEditorWidget.cpp b/Applications/TextEditor/TextEditorWidget.cpp index 27f1fc6595..cc12a350f6 100644 --- a/Applications/TextEditor/TextEditorWidget.cpp +++ b/Applications/TextEditor/TextEditorWidget.cpp @@ -28,6 +28,12 @@ TextEditorWidget::TextEditorWidget() m_editor->set_line_wrapping_enabled(true); m_editor->on_change = [this] { + // Do not mark as diry on the first change (When document is first opened.) + if (m_document_opening) { + m_document_opening = false; + return; + } + bool was_dirty = m_document_dirty; m_document_dirty = true; if (!was_dirty) @@ -282,8 +288,10 @@ void TextEditorWidget::open_sesame(const String& path) return; } - m_document_dirty = false; m_editor->set_text(file->read_all()); + m_document_dirty = false; + m_document_opening = true; + set_path(FileSystemPath(path)); } diff --git a/Applications/TextEditor/TextEditorWidget.h b/Applications/TextEditor/TextEditorWidget.h index dbeac28377..c3b2a3dc99 100644 --- a/Applications/TextEditor/TextEditorWidget.h +++ b/Applications/TextEditor/TextEditorWidget.h @@ -47,4 +47,5 @@ private: RefPtr<GWidget> m_find_widget; bool m_document_dirty { false }; + bool m_document_opening { false }; }; |