summaryrefslogtreecommitdiff
path: root/Libraries/LibGUI/TextDocument.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Libraries/LibGUI/TextDocument.cpp')
-rw-r--r--Libraries/LibGUI/TextDocument.cpp15
1 files changed, 12 insertions, 3 deletions
diff --git a/Libraries/LibGUI/TextDocument.cpp b/Libraries/LibGUI/TextDocument.cpp
index 32ba3a4235..b6d4ef3472 100644
--- a/Libraries/LibGUI/TextDocument.cpp
+++ b/Libraries/LibGUI/TextDocument.cpp
@@ -117,6 +117,12 @@ void TextDocumentLine::clear(TextDocument& document)
document.update_views({});
}
+void TextDocumentLine::set_text(TextDocument& document, const Vector<u32> text)
+{
+ m_text = move(text);
+ document.update_views({});
+}
+
void TextDocumentLine::set_text(TextDocument& document, const StringView& text)
{
if (text.is_empty()) {
@@ -132,6 +138,8 @@ void TextDocumentLine::set_text(TextDocument& document, const StringView& text)
void TextDocumentLine::append(TextDocument& document, const u32* codepoints, size_t length)
{
+ if (length == 0)
+ return;
m_text.append(codepoints, length);
document.update_views({});
}
@@ -588,9 +596,10 @@ void TextDocument::remove(const TextRange& unnormalized_range)
ASSERT(range.start().line() == range.end().line() - 1);
auto& first_line = line(range.start().line());
auto& second_line = line(range.end().line());
- first_line.clear(*this);
- first_line.append(*this, first_line.codepoints(), range.start().column());
- first_line.append(*this, second_line.codepoints() + range.end().column(), second_line.length() - range.end().column());
+ Vector<u32> codepoints;
+ codepoints.append(first_line.codepoints(), range.start().column());
+ codepoints.append(second_line.codepoints() + range.end().column(), second_line.length() - range.end().column());
+ first_line.set_text(*this, move(codepoints));
remove_line(range.end().line());
}