summaryrefslogtreecommitdiffstats
path: root/mpvcore/input/input.c
diff options
context:
space:
mode:
Diffstat (limited to 'mpvcore/input/input.c')
-rw-r--r--mpvcore/input/input.c15
1 files changed, 11 insertions, 4 deletions
diff --git a/mpvcore/input/input.c b/mpvcore/input/input.c
index 12e07a22dd..f977fd9e9d 100644
--- a/mpvcore/input/input.c
+++ b/mpvcore/input/input.c
@@ -2143,13 +2143,15 @@ void mp_input_set_section_mouse_area(struct input_ctx *ictx, char *name,
input_unlock(ictx);
}
-bool mp_input_test_mouse_active(struct input_ctx *ictx, int x, int y)
+static bool test_mouse(struct input_ctx *ictx, int x, int y, int rej_flags)
{
input_lock(ictx);
bool res = false;
for (int i = 0; i < ictx->num_active_sections; i++) {
- char *name = ictx->active_sections[i].name;
- struct cmd_bind_section *s = get_bind_section(ictx, bstr0(name));
+ struct active_section *as = &ictx->active_sections[i];
+ if (as->flags & rej_flags)
+ continue;
+ struct cmd_bind_section *s = get_bind_section(ictx, bstr0(as->name));
if (s->mouse_area_set && test_rect(&s->mouse_area, x, y)) {
res = true;
break;
@@ -2159,9 +2161,14 @@ bool mp_input_test_mouse_active(struct input_ctx *ictx, int x, int y)
return res;
}
+bool mp_input_test_mouse_active(struct input_ctx *ictx, int x, int y)
+{
+ return test_mouse(ictx, x, y, 0);
+}
+
bool mp_input_test_dragging(struct input_ctx *ictx, int x, int y)
{
- return mp_input_test_mouse_active(ictx, x, y);
+ return test_mouse(ictx, x, y, MP_INPUT_ALLOW_VO_DRAGGING);
}
// builtin: if true, remove all builtin binds, else remove all user binds