Просмотр исходного кода

LibLine: Ignore empty spans when stylizing

Previously we would erroneously apply the stylization to the whoever
called stylize next. Now we first check whether the span is non-empty
before stylizing. All non-empty spans must have at least one character
in them (end-exclusive).
sin-ack 3 лет назад
Родитель
Сommit
57c8677b5c
2 измененных файлов с 7 добавлено и 0 удалено
  1. 2 0
      Userland/Libraries/LibLine/Editor.cpp
  2. 5 0
      Userland/Libraries/LibLine/Span.h

+ 2 - 0
Userland/Libraries/LibLine/Editor.cpp

@@ -463,6 +463,8 @@ Editor::CodepointRange Editor::byte_offset_range_to_code_point_offset_range(size
 
 void Editor::stylize(Span const& span, Style const& style)
 {
+    if (!span.is_empty())
+        return;
     if (style.is_empty())
         return;
 

+ 5 - 0
Userland/Libraries/LibLine/Span.h

@@ -28,6 +28,11 @@ public:
     size_t end() const { return m_end; }
     Mode mode() const { return m_mode; }
 
+    bool is_empty() const
+    {
+        return m_beginning < m_end;
+    }
+
 private:
     size_t m_beginning { 0 };
     size_t m_end { 0 };