1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-28 18:25:07 +00:00

LibLine: Be less lazy when moving prompt origin row

Fixes the issue where adding multiple lines in one refresh cycle would
break cursor positioning.
This commit is contained in:
AnotherTest 2020-12-18 15:16:53 +03:30 committed by Andreas Kling
parent 27a5c51f3f
commit 5e6b9cbc91

View file

@ -1036,13 +1036,6 @@ void Editor::refresh_display()
}
m_was_resized = false;
}
// Do not call hook on pure cursor movement.
if (m_cached_prompt_valid && !m_refresh_needed && m_pending_chars.size() == 0) {
// Probably just moving around.
reposition_cursor();
m_cached_buffer_metrics = actual_rendered_string_metrics(buffer_view());
return;
}
// We might be at the last line, and have more than one line;
// Refreshing the display will cause the terminal to scroll,
// so note that fact and bring origin up.
@ -1053,6 +1046,13 @@ void Editor::refresh_display()
else
m_origin_row = m_num_lines - current_num_lines + 1;
}
// Do not call hook on pure cursor movement.
if (m_cached_prompt_valid && !m_refresh_needed && m_pending_chars.size() == 0) {
// Probably just moving around.
reposition_cursor();
m_cached_buffer_metrics = actual_rendered_string_metrics(buffer_view());
return;
}
if (on_display_refresh)
on_display_refresh(*this);