mirror of
https://github.com/RGBCube/serenity
synced 2025-05-19 16:25:08 +00:00
GTextEditor: set_cursor() should gracefully handle old cursor being invalid.
Since set_cursor() may be called after arbitrary document changes, it can't rely on the old cursor being valid. To make things simple, if the old cursor is on a line no longer in the document, just repaint the whole editor.
This commit is contained in:
parent
72cbcd8e98
commit
26110f7753
1 changed files with 4 additions and 1 deletions
|
@ -688,7 +688,10 @@ void GTextEditor::set_cursor(const GTextPosition& position)
|
|||
ASSERT(position.line() < m_lines.size());
|
||||
ASSERT(position.column() <= m_lines[position.line()]->length());
|
||||
if (m_cursor != position) {
|
||||
auto old_cursor_line_rect = line_widget_rect(m_cursor.line());
|
||||
// NOTE: If the old cursor is no longer valid, repaint everything just in case.
|
||||
auto old_cursor_line_rect = m_cursor.line() < m_lines.size()
|
||||
? line_widget_rect(m_cursor.line())
|
||||
: rect();
|
||||
m_cursor = position;
|
||||
m_cursor_state = true;
|
||||
scroll_cursor_into_view();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue