summaryrefslogtreecommitdiff
path: root/Libraries/LibGUI/GTextEditor.cpp
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 /Libraries/LibGUI/GTextEditor.cpp
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.
Diffstat (limited to 'Libraries/LibGUI/GTextEditor.cpp')
-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)