summaryrefslogtreecommitdiff
path: root/Libraries
diff options
context:
space:
mode:
authorAndreas Kling <awesomekling@gmail.com>2019-10-26 15:32:12 +0200
committerAndreas Kling <awesomekling@gmail.com>2019-10-26 15:33:19 +0200
commitbc2026d26d9789c5528e03dd00658b14cd56eaea (patch)
treee3f83a1bbb0e0a32db5abb5d4dbcd5bd5c5031e4 /Libraries
parent4fa8acf6eae67583b36a9025a27c7ebd0c8cec43 (diff)
downloadserenity-bc2026d26d9789c5528e03dd00658b14cd56eaea.zip
LibGUI: Make GTextEditor::Span have a range instead of two positions
A GTextRange is really just two GTextPositions (start and end) anyway. This way we can say nice things like "if (range.contains(position))"
Diffstat (limited to 'Libraries')
-rw-r--r--Libraries/LibGUI/GTextEditor.cpp5
-rw-r--r--Libraries/LibGUI/GTextEditor.h21
2 files changed, 12 insertions, 14 deletions
diff --git a/Libraries/LibGUI/GTextEditor.cpp b/Libraries/LibGUI/GTextEditor.cpp
index f4caf54fe7..df373af563 100644
--- a/Libraries/LibGUI/GTextEditor.cpp
+++ b/Libraries/LibGUI/GTextEditor.cpp
@@ -373,11 +373,10 @@ void GTextEditor::paint_event(GPaintEvent& event)
for (int i = 0; i < visual_line_text.length(); ++i) {
const Font* font = &this->font();
Color color;
- int physical_line = line_index;
- int physical_column = start_of_visual_line + i;
+ GTextPosition physical_position(line_index, start_of_visual_line + i);
// FIXME: This is *horribly* inefficient.
for (auto& span : m_spans) {
- if (!span.contains(GTextPosition(physical_line, physical_column)))
+ if (!span.range.contains(physical_position))
continue;
color = span.color;
if (span.font)
diff --git a/Libraries/LibGUI/GTextEditor.h b/Libraries/LibGUI/GTextEditor.h
index f15437667f..4995eec28d 100644
--- a/Libraries/LibGUI/GTextEditor.h
+++ b/Libraries/LibGUI/GTextEditor.h
@@ -78,6 +78,15 @@ public:
return m_start == other.m_start && m_end == other.m_end;
}
+ bool contains(const GTextPosition& position) const
+ {
+ if (!(position.line() > m_start.line() || (position.line() == m_start.line() && position.column() >= m_start.column())))
+ return false;
+ if (!(position.line() < m_end.line() || (position.line() == m_end.line() && position.column() <= m_end.column())))
+ return false;
+ return true;
+ }
+
private:
GTextPosition normalized_start() const { return m_start < m_end ? m_start : m_end; }
GTextPosition normalized_end() const { return m_start < m_end ? m_end : m_start; }
@@ -168,17 +177,7 @@ public:
void set_cursor(const GTextPosition&);
struct Span {
- bool contains(const GTextPosition& position) const
- {
- if (!(position.line() > start.line() || (position.line() == start.line() && position.column() >= start.column())))
- return false;
- if (!(position.line() < end.line() || (position.line() == end.line() && position.column() <= end.column())))
- return false;
- return true;
- }
-
- GTextPosition start;
- GTextPosition end;
+ GTextRange range;
Color color;
const Font* font { nullptr };
};