diff options
author | Martin Herkt <lachs0r@srsfckn.biz> | 2016-02-28 23:31:51 +0100 |
---|---|---|
committer | Martin Herkt <lachs0r@srsfckn.biz> | 2016-02-28 23:31:51 +0100 |
commit | 21cd4ff05bb46b375a9ad38c9f0b7f8e71a5d979 (patch) | |
tree | b9679cc1d2c7c3cab0f88c370015f34f6d0b27ca /input/input.c | |
parent | d1d6257731866934717353fce484f5f472f845d1 (diff) | |
parent | 1f436f65f2ee4df6419ca68bd6426b8283db6d22 (diff) | |
download | mpv-21cd4ff05bb46b375a9ad38c9f0b7f8e71a5d979.tar.bz2 mpv-21cd4ff05bb46b375a9ad38c9f0b7f8e71a5d979.tar.xz |
Merge branch 'master' into release/current
Diffstat (limited to 'input/input.c')
-rw-r--r-- | input/input.c | 28 |
1 files changed, 21 insertions, 7 deletions
diff --git a/input/input.c b/input/input.c index d1c69a9587..ff7dcea67e 100644 --- a/input/input.c +++ b/input/input.c @@ -604,7 +604,8 @@ static void interpret_key(struct input_ctx *ictx, int code, double scale) mp_input_queue_cmd(ictx, cmd); } -static void mp_input_feed_key(struct input_ctx *ictx, int code, double scale) +static void mp_input_feed_key(struct input_ctx *ictx, int code, double scale, + bool force_mouse) { struct input_opts *opts = ictx->opts; @@ -615,7 +616,7 @@ static void mp_input_feed_key(struct input_ctx *ictx, int code, double scale) release_down_cmd(ictx, false); return; } - if (!opts->enable_mouse_movements && MP_KEY_IS_MOUSE(unmod)) + if (!opts->enable_mouse_movements && MP_KEY_IS_MOUSE(unmod) && !force_mouse) return; if (unmod == MP_KEY_MOUSE_LEAVE || unmod == MP_KEY_MOUSE_ENTER) { update_mouse_section(ictx); @@ -643,7 +644,14 @@ static void mp_input_feed_key(struct input_ctx *ictx, int code, double scale) void mp_input_put_key(struct input_ctx *ictx, int code) { input_lock(ictx); - mp_input_feed_key(ictx, code, 1); + mp_input_feed_key(ictx, code, 1, false); + input_unlock(ictx); +} + +void mp_input_put_key_artificial(struct input_ctx *ictx, int code) +{ + input_lock(ictx); + mp_input_feed_key(ictx, code, 1, true); input_unlock(ictx); } @@ -662,7 +670,7 @@ void mp_input_put_axis(struct input_ctx *ictx, int direction, double value) if (value == 0.0) return; input_lock(ictx); - mp_input_feed_key(ictx, direction, value); + mp_input_feed_key(ictx, direction, value, false); input_unlock(ictx); } @@ -699,11 +707,17 @@ bool mp_input_vo_keyboard_enabled(struct input_ctx *ictx) void mp_input_set_mouse_pos(struct input_ctx *ictx, int x, int y) { input_lock(ictx); + if (ictx->opts->enable_mouse_movements) + mp_input_set_mouse_pos_artificial(ictx, x, y); + input_unlock(ictx); +} + +void mp_input_set_mouse_pos_artificial(struct input_ctx *ictx, int x, int y) +{ + input_lock(ictx); MP_DBG(ictx, "mouse move %d/%d\n", x, y); - if ((ictx->mouse_vo_x == x && ictx->mouse_vo_y == y) || - !ictx->opts->enable_mouse_movements) - { + if (ictx->mouse_vo_x == x && ictx->mouse_vo_y == y) { input_unlock(ictx); return; } |