render: search: improve handling of very long search strings

This commit is contained in:
Daniel Eklöf 2020-04-19 14:50:48 +02:00
parent e93757198a
commit b7593897b7
No known key found for this signature in database
GPG key ID: 5BBD4992C116573F

View file

@ -1532,13 +1532,19 @@ render_search_box(struct terminal *term)
int y = margin;
pixman_color_t fg = color_hex_to_pixman(term->colors.table[0]);
if (term->search.cursor < glyph_offset ||
term->search.cursor >= glyph_offset + visible_chars + 1)
{
/* Make sure cursor is always visible */
/* Ensure cursor is visible */
if (term->search.cursor < glyph_offset)
term->render.search_glyph_offset = glyph_offset = term->search.cursor;
else if (term->search.cursor > glyph_offset + visible_chars) {
term->render.search_glyph_offset = glyph_offset =
term->search.cursor - min(term->search.cursor, visible_chars);
}
/* Move offset if there is free space available */
if (term->search.len - glyph_offset < visible_chars)
term->render.search_glyph_offset = glyph_offset =
term->search.len - min(term->search.len, visible_chars);
/* Text (what the user entered - *not* match(es)) */
for (size_t i = glyph_offset;
i < term->search.len && i - glyph_offset < visible_chars;