summaryrefslogtreecommitdiffstats
path: root/input
diff options
context:
space:
mode:
Diffstat (limited to 'input')
-rw-r--r--input/input.c14
-rw-r--r--input/input.h6
2 files changed, 16 insertions, 4 deletions
diff --git a/input/input.c b/input/input.c
index 41eb794a0e..76cd571a04 100644
--- a/input/input.c
+++ b/input/input.c
@@ -1220,8 +1220,18 @@ void mp_input_enable_section(struct input_ctx *ictx, char *name, int flags)
MP_VERBOSE(ictx, "enable section '%s'\n", name);
if (ictx->num_active_sections < MAX_ACTIVE_SECTIONS) {
- ictx->active_sections[ictx->num_active_sections++] =
- (struct active_section) {name, flags};
+ int top = ictx->num_active_sections;
+ if (!(flags & MP_INPUT_ON_TOP)) {
+ // insert before the first top entry
+ for (top = 0; top < ictx->num_active_sections; top++) {
+ if (ictx->active_sections[top].flags & MP_INPUT_ON_TOP)
+ break;
+ }
+ for (int n = ictx->num_active_sections; n > top; n--)
+ ictx->active_sections[n] = ictx->active_sections[n - 1];
+ }
+ ictx->active_sections[top] = (struct active_section){name, flags};
+ ictx->num_active_sections++;
}
MP_DBG(ictx, "active section stack:\n");
diff --git a/input/input.h b/input/input.h
index 55fd4875de..ee66ff6f8a 100644
--- a/input/input.h
+++ b/input/input.h
@@ -57,10 +57,12 @@ enum mp_input_section_flags {
// other sections for it (like the default section). Instead, an unbound
// key warning will be printed.
MP_INPUT_EXCLUSIVE = 1,
+ // Prefer it to other sections.
+ MP_INPUT_ON_TOP = 2,
// Let mp_input_test_dragging() return true, even if inside the mouse area.
- MP_INPUT_ALLOW_VO_DRAGGING = 2,
+ MP_INPUT_ALLOW_VO_DRAGGING = 4,
// Don't force mouse pointer visible, even if inside the mouse area.
- MP_INPUT_ALLOW_HIDE_CURSOR = 4,
+ MP_INPUT_ALLOW_HIDE_CURSOR = 8,
};
struct input_ctx;