mirror of https://github.com/mpv-player/mpv
input: make combined commands repeatable
Binding multiple commands at once where always considered not repeatable, because the MP_CMD_COMMAND_LIST wasn't considered repeatable. Fixes #807 (probably).
This commit is contained in:
parent
fbe59b23b1
commit
6710527a83
|
@ -285,6 +285,12 @@ bool mp_input_is_abort_cmd(struct mp_cmd *cmd)
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool mp_input_is_repeatable_cmd(struct mp_cmd *cmd)
|
||||||
|
{
|
||||||
|
return (cmd->def && cmd->def->allow_auto_repeat) ||
|
||||||
|
cmd->id == MP_CMD_COMMAND_LIST;
|
||||||
|
}
|
||||||
|
|
||||||
void mp_print_cmd_list(struct mp_log *out)
|
void mp_print_cmd_list(struct mp_log *out)
|
||||||
{
|
{
|
||||||
for (int i = 0; mp_cmds[i].name; i++) {
|
for (int i = 0; mp_cmds[i].name; i++) {
|
||||||
|
|
|
@ -116,6 +116,8 @@ enum mp_command_type {
|
||||||
struct mp_cmd;
|
struct mp_cmd;
|
||||||
bool mp_input_is_abort_cmd(struct mp_cmd *cmd);
|
bool mp_input_is_abort_cmd(struct mp_cmd *cmd);
|
||||||
|
|
||||||
|
bool mp_input_is_repeatable_cmd(struct mp_cmd *cmd);
|
||||||
|
|
||||||
struct bstr;
|
struct bstr;
|
||||||
bool mp_replace_legacy_cmd(void *talloc_ctx, struct bstr *s);
|
bool mp_replace_legacy_cmd(void *talloc_ctx, struct bstr *s);
|
||||||
|
|
||||||
|
|
|
@ -515,7 +515,7 @@ static void update_mouse_section(struct input_ctx *ictx)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Called when the currently held-down key is released. This (usually) sends
|
// Called when the currently held-down key is released. This (usually) sends
|
||||||
// the a key-up versiob of the command associated with the keys that were held
|
// the a key-up version of the command associated with the keys that were held
|
||||||
// down.
|
// down.
|
||||||
// If the drop_current parameter is set to true, then don't send the key-up
|
// If the drop_current parameter is set to true, then don't send the key-up
|
||||||
// command. Unless we've already sent a key-down event, in which case the
|
// command. Unless we've already sent a key-down event, in which case the
|
||||||
|
@ -1112,7 +1112,7 @@ mp_cmd_t *mp_input_get_cmd(struct input_ctx *ictx, int time, int peek_only)
|
||||||
struct mp_cmd *repeated = check_autorepeat(ictx);
|
struct mp_cmd *repeated = check_autorepeat(ictx);
|
||||||
if (repeated) {
|
if (repeated) {
|
||||||
repeated->repeated = true;
|
repeated->repeated = true;
|
||||||
if (repeated->def && repeated->def->allow_auto_repeat) {
|
if (mp_input_is_repeatable_cmd(repeated)) {
|
||||||
queue_add_tail(queue, repeated);
|
queue_add_tail(queue, repeated);
|
||||||
} else {
|
} else {
|
||||||
talloc_free(repeated);
|
talloc_free(repeated);
|
||||||
|
|
Loading…
Reference in New Issue