lua: implement input_enable_section/input_disable_section via commands

Removes some more internal API calls from the Lua scripting backend.
Which is good, because ideally the scripting backend would use libmpv
functions only.

One awkwardness is that mouse sections are still not supported by the
public commands (and probably will never), so flags like allow-hide-
cursor make no sense to an outside user.

Also, the way flags are passed to the Lua function changes. But that's
ok, because they're only undocumented internal functions, and not
supposed to be used by script users. osc.lua only does due to historical
reasons.
This commit is contained in:
wm4
2015-08-06 00:31:47 +02:00
parent caebbded67
commit d6c99bcda2
6 changed files with 31 additions and 44 deletions

View File

@@ -4684,8 +4684,7 @@ int run_command(struct MPContext *mpctx, struct mp_cmd *cmd, struct mpv_node *re
}
case MP_CMD_ENABLE_INPUT_SECTION:
mp_input_enable_section(mpctx->input, cmd->args[0].v.s,
cmd->args[1].v.i == 1 ? MP_INPUT_EXCLUSIVE : 0);
mp_input_enable_section(mpctx->input, cmd->args[0].v.s, cmd->args[1].v.i);
break;
case MP_CMD_DISABLE_INPUT_SECTION:

View File

@@ -1024,38 +1024,6 @@ static int script_get_time(lua_State *L)
return 1;
}
static int script_input_enable_section(lua_State *L)
{
struct MPContext *mpctx = get_mpctx(L);
char *section = (char *)luaL_checkstring(L, 1);
char *sflags = (char *)luaL_optstring(L, 2, "");
bstr bflags = bstr0(sflags);
int flags = 0;
while (bflags.len) {
bstr val;
bstr_split_tok(bflags, "|", &val, &bflags);
if (bstr_equals0(val, "allow-hide-cursor")) {
flags |= MP_INPUT_ALLOW_HIDE_CURSOR;
} else if (bstr_equals0(val, "allow-vo-dragging")) {
flags |= MP_INPUT_ALLOW_VO_DRAGGING;
} else if (bstr_equals0(val, "exclusive")) {
flags |= MP_INPUT_EXCLUSIVE;
} else {
luaL_error(L, "invalid flag");
}
}
mp_input_enable_section(mpctx->input, section, flags);
return 0;
}
static int script_input_disable_section(lua_State *L)
{
struct MPContext *mpctx = get_mpctx(L);
char *section = (char *)luaL_checkstring(L, 1);
mp_input_disable_section(mpctx->input, section);
return 0;
}
static int script_input_set_section_mouse_area(lua_State *L)
{
struct MPContext *mpctx = get_mpctx(L);
@@ -1301,8 +1269,6 @@ static const struct fn_entry main_fns[] = {
FN_ENTRY(get_screen_margins),
FN_ENTRY(get_mouse_pos),
FN_ENTRY(get_time),
FN_ENTRY(input_enable_section),
FN_ENTRY(input_disable_section),
FN_ENTRY(input_set_section_mouse_area),
FN_ENTRY(format_time),
FN_ENTRY(enable_messages),

View File

@@ -31,6 +31,17 @@ function mp.input_define_section(section, contents, flags)
mp.commandv("define-section", section, contents, flags)
end
function mp.input_enable_section(section, flags)
if flags == nil then
flags = ""
end
mp.commandv("enable-section", section, flags)
end
function mp.input_disable_section(section)
mp.commandv("disable-section", section)
end
-- For dispatching script_binding. This is sent as:
-- script_message_to $script_name $binding_name $keystate
-- The array is indexed by $binding_name, and has functions like this as value:
@@ -140,7 +151,7 @@ local function update_key_bindings()
end
mp.input_define_section(section, cfg, flags)
-- TODO: remove the section if the script is stopped
mp.input_enable_section(section, "allow-hide-cursor|allow-vo-dragging")
mp.input_enable_section(section, "allow-hide-cursor+allow-vo-dragging")
end
end

View File

@@ -1935,7 +1935,7 @@ end
function do_enable_keybindings()
if state.enabled then
mp.enable_key_bindings("showhide", "allow-vo-dragging|allow-hide-cursor")
mp.enable_key_bindings("showhide", "allow-vo-dragging+allow-hide-cursor")
end
end