diff --git a/Userland/Libraries/LibGUI/TextEditor.cpp b/Userland/Libraries/LibGUI/TextEditor.cpp index 0dee5cd8e8..1bab83758d 100644 --- a/Userland/Libraries/LibGUI/TextEditor.cpp +++ b/Userland/Libraries/LibGUI/TextEditor.cpp @@ -216,25 +216,21 @@ void TextEditor::doubleclick_event(MouseEvent& event) m_triple_click_timer.start(); m_in_drag_select = false; - auto start = text_position_at(event.position()); - auto end = start; + auto position = text_position_at(event.position()); - if (!document().has_spans()) { - start = document().first_word_break_before(start, false); - end = document().first_word_break_after(end); - } else { + if (document().has_spans()) { for (auto& span : document().spans()) { - if (!span.range.contains(start)) - continue; - start = span.range.start(); - end = span.range.end(); - end.set_column(end.column() + 1); - break; + if (span.range.contains(position)) { + m_selection = span.range; + break; + } } + } else { + m_selection.set_start(document().first_word_break_before(position, false)); + m_selection.set_end(document().first_word_break_after(position)); } - m_selection.set(start, end); - set_cursor(end); + set_cursor(m_selection.end()); update(); did_update_selection(); } @@ -253,22 +249,8 @@ void TextEditor::mousedown_event(MouseEvent& event) if (m_triple_click_timer.is_valid() && m_triple_click_timer.elapsed() < 250) { m_triple_click_timer = Core::ElapsedTimer(); - - TextPosition start; - TextPosition end; - - if (is_multi_line()) { - // select *current* line - start = TextPosition(m_cursor.line(), 0); - end = TextPosition(m_cursor.line(), line(m_cursor.line()).length()); - } else { - // select *whole* line - start = TextPosition(0, 0); - end = TextPosition(line_count() - 1, line(line_count() - 1).length()); - } - - m_selection.set(start, end); - set_cursor(end); + m_selection = document().range_for_entire_line(m_cursor.line()); + set_cursor(m_selection.end()); update(); did_update_selection(); return;