render: ensure cursor is always visible in the search box

Maintain a view 'offset' (which glyph from the search string to start
rendering at).

This defines the start of the viewable area. The end is the offset +
the search box size (which is limited to the window size).

Adjust this offset whenever the cursor moves outside the viewable
area. For now, this is always done in the same way: set the offset to
the cursor position.

This means that when we're entering text at the end of the search
criteria (i.e. the normal case; we're simply typing), and the search
box reaches the window size, the cursor will jump to the start of the
search box, which will be empty. This could be confusing, but let's go
with for now.
This commit is contained in:
Daniel Eklöf 2020-01-05 15:16:40 +01:00
parent ee7ff9501e
commit 5a89520274
No known key found for this signature in database
GPG key ID: 5BBD4992C116573F
3 changed files with 29 additions and 6 deletions

View file

@ -51,6 +51,7 @@ search_cancel_keep_selection(struct terminal *term)
term->search.match = (struct coord){-1, -1};
term->search.match_len = 0;
term->is_searching = false;
term->render.search_offset = 0;
term_xcursor_update(term);
render_refresh(term);