mirror of
https://github.com/tmux/tmux.git
synced 2024-12-13 10:08:47 +00:00
Merge branch 'obsd-master'
Conflicts: server-client.c
This commit is contained in:
commit
7f83b53027
@ -190,7 +190,7 @@ cmd_set_option_exec(struct cmd *self, struct cmdq_item *item)
|
||||
/* Change the option. */
|
||||
if (args_has(args, 'u')) {
|
||||
if (o == NULL)
|
||||
goto fail;
|
||||
goto out;
|
||||
if (idx == -1) {
|
||||
if (oo == global_options ||
|
||||
oo == global_s_options ||
|
||||
|
2
input.c
2
input.c
@ -433,7 +433,7 @@ static const struct input_state input_state_rename_string = {
|
||||
/* consume_st state definition. */
|
||||
static const struct input_state input_state_consume_st = {
|
||||
"consume_st",
|
||||
NULL, NULL,
|
||||
input_enter_rename, NULL, /* rename also waits for ST */
|
||||
input_state_consume_st_table
|
||||
};
|
||||
|
||||
|
@ -138,12 +138,17 @@ void
|
||||
key_bindings_remove_table(const char *name)
|
||||
{
|
||||
struct key_table *table;
|
||||
struct client *c;
|
||||
|
||||
table = key_bindings_get_table(name, 0);
|
||||
if (table != NULL) {
|
||||
RB_REMOVE(key_tables, &key_tables, table);
|
||||
key_bindings_unref_table(table);
|
||||
}
|
||||
TAILQ_FOREACH(c, &clients, entry) {
|
||||
if (c->keytable == table)
|
||||
server_client_set_key_table(c, NULL);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
|
27
mode-tree.c
27
mode-tree.c
@ -127,6 +127,17 @@ mode_tree_free_items(struct mode_tree_list *mtl)
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
mode_tree_check_selected(struct mode_tree_data *mtd)
|
||||
{
|
||||
/*
|
||||
* If the current line would now be off screen reset the offset to the
|
||||
* last visible line.
|
||||
*/
|
||||
if (mtd->current > mtd->height - 1)
|
||||
mtd->offset = mtd->current - mtd->height + 1;
|
||||
}
|
||||
|
||||
static void
|
||||
mode_tree_clear_lines(struct mode_tree_data *mtd)
|
||||
{
|
||||
@ -192,7 +203,7 @@ mode_tree_set_current(struct mode_tree_data *mtd, uint64_t tag)
|
||||
if (i != mtd->line_size) {
|
||||
mtd->current = i;
|
||||
if (mtd->current > mtd->height - 1)
|
||||
mtd->offset = 1 + mtd->current - mtd->height;
|
||||
mtd->offset = mtd->current - mtd->height + 1;
|
||||
else
|
||||
mtd->offset = 0;
|
||||
} else {
|
||||
@ -361,6 +372,7 @@ mode_tree_build(struct mode_tree_data *mtd)
|
||||
mtd->height = screen_size_y(s);
|
||||
} else
|
||||
mtd->height = screen_size_y(s);
|
||||
mode_tree_check_selected(mtd);
|
||||
}
|
||||
|
||||
static void
|
||||
@ -792,7 +804,7 @@ mode_tree_key(struct mode_tree_data *mtd, struct client *c, key_code *key,
|
||||
case KEYC_END:
|
||||
mtd->current = mtd->line_size - 1;
|
||||
if (mtd->current > mtd->height - 1)
|
||||
mtd->offset = mtd->current - mtd->height;
|
||||
mtd->offset = mtd->current - mtd->height + 1;
|
||||
else
|
||||
mtd->offset = 0;
|
||||
break;
|
||||
@ -870,15 +882,8 @@ mode_tree_key(struct mode_tree_data *mtd, struct client *c, key_code *key,
|
||||
case 'v':
|
||||
mtd->preview = !mtd->preview;
|
||||
mode_tree_build(mtd);
|
||||
|
||||
/*
|
||||
* If the current line would now be off screen now the preview
|
||||
* is on, reset the the offset to the last visible line.
|
||||
*/
|
||||
if (mtd->preview && mtd->current > mtd->height - 1) {
|
||||
mtd->offset = mtd->current - mtd->height;
|
||||
mtd->current--;
|
||||
}
|
||||
if (mtd->preview)
|
||||
mode_tree_check_selected(mtd);
|
||||
break;
|
||||
}
|
||||
return (0);
|
||||
|
Loading…
Reference in New Issue
Block a user