diff --git a/src/apps/haiku-depot/textview/Paragraph.cpp b/src/apps/haiku-depot/textview/Paragraph.cpp index d3b8a163cd..768d20864b 100644 --- a/src/apps/haiku-depot/textview/Paragraph.cpp +++ b/src/apps/haiku-depot/textview/Paragraph.cpp @@ -66,6 +66,22 @@ Paragraph::SetStyle(const ParagraphStyle& style) } +bool +Paragraph::Prepend(const TextSpan& span) +{ + // Try to merge with first span if the TextStyles are equal + if (fTextSpans.CountItems() > 0) { + const TextSpan& firstSpan = fTextSpans.ItemAtFast(0); + if (firstSpan.Style() == span.Style()) { + BString text(span.Text()); + text.Append(firstSpan.Text()); + return fTextSpans.Replace(0, TextSpan(text, span.Style())); + } + } + return fTextSpans.Add(span, 0); +} + + bool Paragraph::Append(const TextSpan& span) { diff --git a/src/apps/haiku-depot/textview/Paragraph.h b/src/apps/haiku-depot/textview/Paragraph.h index 64ca2cbe93..6685a9e225 100644 --- a/src/apps/haiku-depot/textview/Paragraph.h +++ b/src/apps/haiku-depot/textview/Paragraph.h @@ -30,6 +30,7 @@ public: inline const TextSpanList& TextSpans() const { return fTextSpans; } + bool Prepend(const TextSpan& span); bool Append(const TextSpan& span); bool Insert(int32 offset, const TextSpan& span); bool Remove(int32 offset, int32 length);