From 74ca299b4b51d8f8a3c46fdba1f8e91a7eb7f9a6 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Sun, 1 Sep 2019 17:30:23 +0200 Subject: [PATCH] GTextEditor: Make visual lines stop after their last character Instead of letting each visual line run to the end of the editor when wrapping lines, stop each visual line where it runs ouf characters. Fixes #493. --- Libraries/LibGUI/GTextEditor.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Libraries/LibGUI/GTextEditor.cpp b/Libraries/LibGUI/GTextEditor.cpp index 53d3477290..15129a7584 100644 --- a/Libraries/LibGUI/GTextEditor.cpp +++ b/Libraries/LibGUI/GTextEditor.cpp @@ -156,7 +156,7 @@ GTextPosition GTextEditor::text_position_at(const Point& a_position) const column_index = (position.x() + glyph_width() / 2) / glyph_width(); if (is_line_wrapping_enabled()) { line.for_each_visual_line([&](const Rect& rect, const StringView&, int start_of_line) { - if (rect.contains(position)) { + if (rect.contains_vertically(position.y())) { column_index += start_of_line; return IterationDecision::Break; } @@ -405,7 +405,7 @@ void GTextEditor::paint_event(GPaintEvent& event) int selection_right = selection_ends_on_current_visual_line ? content_x_for_position({ line_index, selection_end_column_within_line }) - : visual_line_rect.right(); + : visual_line_rect.right() + 1; Rect selection_rect { selection_left, @@ -1412,7 +1412,7 @@ void GTextEditor::Line::for_each_visual_line(Callback callback) const Rect visual_line_rect { m_visual_rect.x(), m_visual_rect.y() + (line_index * m_editor.line_height()), - m_visual_rect.width(), + m_editor.font().width(visual_line_view), m_editor.line_height() }; if (callback(visual_line_rect, visual_line_view, start_of_line) == IterationDecision::Break)