From d391f1fb2a94ebd3c3884f544b6d559b7eca757b Mon Sep 17 00:00:00 2001 From: Lucas CHOLLET Date: Tue, 7 Jun 2022 18:55:10 +0200 Subject: [PATCH] LibGUI: Add TextDocument::take_line(size_t line_index) This method is similar in all respects to remove_line except that it returns the removed line. --- Userland/Libraries/LibGUI/TextDocument.cpp | 10 ++++++++++ Userland/Libraries/LibGUI/TextDocument.h | 1 + 2 files changed, 11 insertions(+) diff --git a/Userland/Libraries/LibGUI/TextDocument.cpp b/Userland/Libraries/LibGUI/TextDocument.cpp index c58f667708..5e933beb5e 100644 --- a/Userland/Libraries/LibGUI/TextDocument.cpp +++ b/Userland/Libraries/LibGUI/TextDocument.cpp @@ -270,6 +270,16 @@ void TextDocument::insert_line(size_t line_index, NonnullOwnPtr TextDocument::take_line(size_t line_index) +{ + auto line = lines().take(line_index); + if (m_client_notifications_enabled) { + for (auto* client : m_clients) + client->document_did_remove_line(line_index); + } + return line; +} + void TextDocument::remove_line(size_t line_index) { lines().remove((int)line_index); diff --git a/Userland/Libraries/LibGUI/TextDocument.h b/Userland/Libraries/LibGUI/TextDocument.h index 371c20176e..f2c661a72b 100644 --- a/Userland/Libraries/LibGUI/TextDocument.h +++ b/Userland/Libraries/LibGUI/TextDocument.h @@ -80,6 +80,7 @@ public: TextDocumentSpan const* span_at(TextPosition const&) const; void append_line(NonnullOwnPtr); + NonnullOwnPtr take_line(size_t line_index); void remove_line(size_t line_index); void remove_all_lines(); void insert_line(size_t line_index, NonnullOwnPtr);