summaryrefslogtreecommitdiff
path: root/Userland/Libraries
diff options
context:
space:
mode:
Diffstat (limited to 'Userland/Libraries')
-rw-r--r--Userland/Libraries/LibGUI/EditingEngine.cpp46
-rw-r--r--Userland/Libraries/LibGUI/TextEditor.cpp27
2 files changed, 16 insertions, 57 deletions
diff --git a/Userland/Libraries/LibGUI/EditingEngine.cpp b/Userland/Libraries/LibGUI/EditingEngine.cpp
index 22293046d3..718da1b6ed 100644
--- a/Userland/Libraries/LibGUI/EditingEngine.cpp
+++ b/Userland/Libraries/LibGUI/EditingEngine.cpp
@@ -301,15 +301,8 @@ EditingEngine::DidMoveALine EditingEngine::move_one_up(KeyEvent const& event)
}
return DidMoveALine::No;
}
- TextPosition new_cursor;
- if (m_editor->is_wrapping_enabled()) {
- auto position_above = m_editor->cursor_content_rect().location().translated(0, -m_editor->line_height());
- new_cursor = m_editor->text_position_at_content_position(position_above);
- } else {
- size_t new_line = m_editor->cursor().line() - 1;
- size_t new_column = min(m_editor->cursor().column(), m_editor->line(new_line).length());
- new_cursor = { new_line, new_column };
- }
+ auto position_above = m_editor->cursor_content_rect().location().translated(0, -m_editor->line_height());
+ TextPosition new_cursor = m_editor->text_position_at_content_position(position_above);
m_editor->set_cursor(new_cursor);
}
return DidMoveALine::No;
@@ -325,15 +318,8 @@ EditingEngine::DidMoveALine EditingEngine::move_one_down(KeyEvent const& event)
}
return DidMoveALine::No;
}
- TextPosition new_cursor;
- if (m_editor->is_wrapping_enabled()) {
- auto position_below = m_editor->cursor_content_rect().location().translated(0, m_editor->line_height());
- new_cursor = m_editor->text_position_at_content_position(position_below);
- } else {
- size_t new_line = m_editor->cursor().line() + 1;
- size_t new_column = min(m_editor->cursor().column(), m_editor->line(new_line).length());
- new_cursor = { new_line, new_column };
- }
+ auto position_below = m_editor->cursor_content_rect().location().translated(0, m_editor->line_height());
+ TextPosition new_cursor = m_editor->text_position_at_content_position(position_below);
m_editor->set_cursor(new_cursor);
}
return DidMoveALine::No;
@@ -343,17 +329,8 @@ void EditingEngine::move_up(double page_height_factor)
{
if (m_editor->cursor().line() > 0 || m_editor->is_wrapping_enabled()) {
int pixels = (int)(m_editor->visible_content_rect().height() * page_height_factor);
-
- TextPosition new_cursor;
- if (m_editor->is_wrapping_enabled()) {
- auto position_above = m_editor->cursor_content_rect().location().translated(0, -pixels);
- new_cursor = m_editor->text_position_at_content_position(position_above);
- } else {
- size_t page_step = (size_t)pixels / (size_t)m_editor->line_height();
- size_t new_line = m_editor->cursor().line() < page_step ? 0 : m_editor->cursor().line() - page_step;
- size_t new_column = min(m_editor->cursor().column(), m_editor->line(new_line).length());
- new_cursor = { new_line, new_column };
- }
+ auto position_above = m_editor->cursor_content_rect().location().translated(0, -pixels);
+ TextPosition new_cursor = m_editor->text_position_at_content_position(position_above);
m_editor->set_cursor(new_cursor);
}
};
@@ -362,15 +339,8 @@ void EditingEngine::move_down(double page_height_factor)
{
if (m_editor->cursor().line() < (m_editor->line_count() - 1) || m_editor->is_wrapping_enabled()) {
int pixels = (int)(m_editor->visible_content_rect().height() * page_height_factor);
- TextPosition new_cursor;
- if (m_editor->is_wrapping_enabled()) {
- auto position_below = m_editor->cursor_content_rect().location().translated(0, pixels);
- new_cursor = m_editor->text_position_at_content_position(position_below);
- } else {
- size_t new_line = min(m_editor->line_count() - 1, m_editor->cursor().line() + pixels / m_editor->line_height());
- size_t new_column = min(m_editor->cursor().column(), m_editor->lines()[new_line].length());
- new_cursor = { new_line, new_column };
- }
+ auto position_below = m_editor->cursor_content_rect().location().translated(0, pixels);
+ TextPosition new_cursor = m_editor->text_position_at_content_position(position_below);
m_editor->set_cursor(new_cursor);
};
}
diff --git a/Userland/Libraries/LibGUI/TextEditor.cpp b/Userland/Libraries/LibGUI/TextEditor.cpp
index 608e17384a..312ee0282d 100644
--- a/Userland/Libraries/LibGUI/TextEditor.cpp
+++ b/Userland/Libraries/LibGUI/TextEditor.cpp
@@ -149,18 +149,14 @@ TextPosition TextEditor::text_position_at_content_position(Gfx::IntPoint content
size_t line_index = 0;
if (position.y() >= 0) {
- if (is_wrapping_enabled()) {
- for (size_t i = 0; i < line_count(); ++i) {
- auto& rect = m_line_visual_data[i].visual_rect;
- if (position.y() >= rect.top() && position.y() <= rect.bottom()) {
- line_index = i;
- break;
- }
- if (position.y() > rect.bottom())
- line_index = line_count() - 1;
+ for (size_t i = 0; i < line_count(); ++i) {
+ auto& rect = m_line_visual_data[i].visual_rect;
+ if (position.y() >= rect.top() && position.y() <= rect.bottom()) {
+ line_index = i;
+ break;
}
- } else {
- line_index = (size_t)(position.y() / line_height());
+ if (position.y() > rect.bottom())
+ line_index = line_count() - 1;
}
line_index = max((size_t)0, min(line_index, line_count() - 1));
}
@@ -1357,14 +1353,7 @@ Gfx::IntRect TextEditor::line_content_rect(size_t line_index) const
line_rect.center_vertically_within({ {}, frame_inner_rect().size() });
return line_rect;
}
- if (is_wrapping_enabled())
- return m_line_visual_data[line_index].visual_rect;
- return {
- content_x_for_position({ line_index, 0 }),
- (int)line_index * line_height(),
- text_width_for_font(line.view(), font()),
- line_height()
- };
+ return m_line_visual_data[line_index].visual_rect;
}
void TextEditor::set_cursor_and_focus_line(size_t line, size_t column)