summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Kling <awesomekling@gmail.com>2019-09-01 17:30:23 +0200
committerAndreas Kling <awesomekling@gmail.com>2019-09-01 17:30:23 +0200
commit74ca299b4b51d8f8a3c46fdba1f8e91a7eb7f9a6 (patch)
tree4f8afc4400fc8ea63d0c54061a40c2a3e2727db5
parent72a29d72d3c9461fd093ef76ca27bb0f23d3ec9b (diff)
downloadserenity-74ca299b4b51d8f8a3c46fdba1f8e91a7eb7f9a6.zip
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.
-rw-r--r--Libraries/LibGUI/GTextEditor.cpp6
1 files 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)