input: pass through scrollback-* key bindings when alt screen is activw

Since the alt screen have no scrollback, all scrollback-* actions are
effectively no-ops when the alt screen is active.

Make them available to the client application instead.

Closes #573
This commit is contained in:
Daniel Eklöf 2021-06-04 23:25:45 +02:00
parent b5515a414a
commit a7e2e4bfa9
No known key found for this signature in database
GPG key ID: 5BBD4992C116573F
2 changed files with 36 additions and 12 deletions

45
input.c
View file

@ -88,28 +88,46 @@ execute_binding(struct seat *seat, struct terminal *term,
return true;
case BIND_ACTION_SCROLLBACK_UP_PAGE:
cmd_scrollback_up(term, term->rows);
return true;
if (term->grid == &term->normal) {
cmd_scrollback_up(term, term->rows);
return true;
}
break;
case BIND_ACTION_SCROLLBACK_UP_HALF_PAGE:
cmd_scrollback_up(term, max(term->rows / 2, 1));
return true;
if (term->grid == &term->normal) {
cmd_scrollback_up(term, max(term->rows / 2, 1));
return true;
}
break;
case BIND_ACTION_SCROLLBACK_UP_LINE:
cmd_scrollback_up(term, 1);
return true;
if (term->grid == &term->normal) {
cmd_scrollback_up(term, 1);
return true;
}
break;
case BIND_ACTION_SCROLLBACK_DOWN_PAGE:
cmd_scrollback_down(term, term->rows);
return true;
if (term->grid == &term->normal) {
cmd_scrollback_down(term, term->rows);
return true;
}
break;
case BIND_ACTION_SCROLLBACK_DOWN_HALF_PAGE:
cmd_scrollback_down(term, max(term->rows / 2, 1));
return true;
if (term->grid == &term->normal) {
cmd_scrollback_down(term, max(term->rows / 2, 1));
return true;
}
break;
case BIND_ACTION_SCROLLBACK_DOWN_LINE:
cmd_scrollback_down(term, 1);
return true;
if (term->grid == &term->normal) {
cmd_scrollback_down(term, 1);
return true;
}
break;
case BIND_ACTION_CLIPBOARD_COPY:
selection_to_clipboard(seat, term, serial);
@ -165,6 +183,9 @@ execute_binding(struct seat *seat, struct terminal *term,
return true;
case BIND_ACTION_PIPE_SCROLLBACK:
if (term->grid == &term->alt)
break;
/* FALLTHROUGH */
case BIND_ACTION_PIPE_VIEW:
case BIND_ACTION_PIPE_SELECTED: {
if (pipe_argv == NULL)