From 279599cbedcb7eb7ab837cb0757e250e42d09f8c Mon Sep 17 00:00:00 2001 From: one-some Date: Sat, 27 Mar 2021 18:13:26 -0500 Subject: EditingEngine: Don't jump to the beginning or end of a non-existant word Previously, when jumping to the next word on the last column of a line, or when jumping to the previous word on the first column, it would crash. This checks if that is the case, and if so, will do nothing. --- Userland/Libraries/LibGUI/EditingEngine.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'Userland') diff --git a/Userland/Libraries/LibGUI/EditingEngine.cpp b/Userland/Libraries/LibGUI/EditingEngine.cpp index 7907346af7..15a4de5233 100644 --- a/Userland/Libraries/LibGUI/EditingEngine.cpp +++ b/Userland/Libraries/LibGUI/EditingEngine.cpp @@ -477,6 +477,10 @@ TextPosition EditingEngine::find_end_of_next_word() bool is_first_iteration = true; auto& lines = m_editor->lines(); auto cursor = m_editor->cursor(); + + if ((lines.at(cursor.line()).length() - cursor.column()) <= 1) + return { cursor.line(), cursor.column() }; + for (size_t line_index = cursor.line(); line_index < lines.size(); line_index++) { auto& line = lines.at(line_index); @@ -605,6 +609,10 @@ TextPosition EditingEngine::find_beginning_of_previous_word() bool is_first_iteration = true; auto& lines = m_editor->lines(); auto cursor = m_editor->cursor(); + + if ((lines.at(cursor.line()).length() - cursor.column()) <= 1) + return { cursor.line(), cursor.column() }; + for (size_t line_index = cursor.line(); (int)line_index >= 0; line_index--) { auto& line = lines.at(line_index); -- cgit v1.2.3