From 23c4f100274d7d32ec0d6ba793d3d230f252cda0 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Thu, 29 Oct 2020 23:52:07 +0100 Subject: [PATCH] LibGUI: Add TextDocument::span_at(TextPosition) --- Libraries/LibGUI/TextDocument.cpp | 9 +++++++++ Libraries/LibGUI/TextDocument.h | 2 ++ 2 files changed, 11 insertions(+) diff --git a/Libraries/LibGUI/TextDocument.cpp b/Libraries/LibGUI/TextDocument.cpp index 35abe1e3ace..137cbdab944 100644 --- a/Libraries/LibGUI/TextDocument.cpp +++ b/Libraries/LibGUI/TextDocument.cpp @@ -699,4 +699,13 @@ TextRange TextDocument::range_for_entire_line(size_t line_index) const return { { line_index, 0 }, { line_index, line(line_index).length() } }; } +const TextDocumentSpan* TextDocument::span_at(const TextPosition& position) const +{ + for (auto& span : m_spans) { + if (span.range.contains(position)) + return &span; + } + return nullptr; +} + } diff --git a/Libraries/LibGUI/TextDocument.h b/Libraries/LibGUI/TextDocument.h index e6ee731ceb4..27b9f4b10f9 100644 --- a/Libraries/LibGUI/TextDocument.h +++ b/Libraries/LibGUI/TextDocument.h @@ -93,6 +93,8 @@ public: const Vector& spans() const { return m_spans; } void set_span_at_index(size_t index, TextDocumentSpan span) { m_spans[index] = move(span); } + const TextDocumentSpan* span_at(const TextPosition&) const; + void append_line(NonnullOwnPtr); void remove_line(size_t line_index); void remove_all_lines();