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.
This commit is contained in:
one-some 2021-03-27 18:13:26 -05:00 committed by Andreas Kling
commit 279599cbed
Notes: sideshowbarker 2024-07-19 17:28:49 +09:00

View file

@ -477,6 +477,10 @@ TextPosition EditingEngine::find_end_of_next_word()
bool is_first_iteration = true; bool is_first_iteration = true;
auto& lines = m_editor->lines(); auto& lines = m_editor->lines();
auto cursor = m_editor->cursor(); 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++) { for (size_t line_index = cursor.line(); line_index < lines.size(); line_index++) {
auto& line = lines.at(line_index); auto& line = lines.at(line_index);
@ -605,6 +609,10 @@ TextPosition EditingEngine::find_beginning_of_previous_word()
bool is_first_iteration = true; bool is_first_iteration = true;
auto& lines = m_editor->lines(); auto& lines = m_editor->lines();
auto cursor = m_editor->cursor(); 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--) { for (size_t line_index = cursor.line(); (int)line_index >= 0; line_index--) {
auto& line = lines.at(line_index); auto& line = lines.at(line_index);