diff options
Diffstat (limited to 'src/3rdparty/xkbcommon/src/text.c')
-rw-r--r-- | src/3rdparty/xkbcommon/src/text.c | 33 |
1 files changed, 11 insertions, 22 deletions
diff --git a/src/3rdparty/xkbcommon/src/text.c b/src/3rdparty/xkbcommon/src/text.c index f3a09e843d..1a44de47b4 100644 --- a/src/3rdparty/xkbcommon/src/text.c +++ b/src/3rdparty/xkbcommon/src/text.c @@ -204,32 +204,20 @@ const LookupEntry symInterpretMatchMaskNames[] = { { "AnyOf", MATCH_ANY }, { "AllOf", MATCH_ALL }, { "Exactly", MATCH_EXACTLY }, + { NULL, 0 }, }; const char * -ModIndexText(const struct xkb_keymap *keymap, xkb_mod_index_t ndx) +ModIndexText(struct xkb_context *ctx, const struct xkb_mod_set *mods, + xkb_mod_index_t ndx) { if (ndx == XKB_MOD_INVALID) return "none"; - if (ndx >= darray_size(keymap->mods)) + if (ndx >= mods->num_mods) return NULL; - return xkb_atom_text(keymap->ctx, darray_item(keymap->mods, ndx).name); -} - -xkb_mod_index_t -ModNameToIndex(const struct xkb_keymap *keymap, xkb_atom_t name, - enum mod_type type) -{ - xkb_mod_index_t i; - const struct xkb_mod *mod; - - darray_enumerate(i, mod, keymap->mods) - if ((mod->type & type) && name == mod->name) - return i; - - return XKB_MOD_INVALID; + return xkb_atom_text(ctx, mods->mods[ndx].name); } const char * @@ -264,9 +252,10 @@ SIMatchText(enum xkb_match_operation type) } const char * -ModMaskText(const struct xkb_keymap *keymap, xkb_mod_mask_t mask) +ModMaskText(struct xkb_context *ctx, const struct xkb_mod_set *mods, + xkb_mod_mask_t mask) { - char buf[1024]; + char buf[1024] = {0}; size_t pos = 0; xkb_mod_index_t i; const struct xkb_mod *mod; @@ -277,7 +266,7 @@ ModMaskText(const struct xkb_keymap *keymap, xkb_mod_mask_t mask) if (mask == MOD_REAL_MASK_ALL) return "all"; - darray_enumerate(i, mod, keymap->mods) { + xkb_mods_enumerate(i, mod, mods) { int ret; if (!(mask & (1u << i))) @@ -285,14 +274,14 @@ ModMaskText(const struct xkb_keymap *keymap, xkb_mod_mask_t mask) ret = snprintf(buf + pos, sizeof(buf) - pos, "%s%s", pos == 0 ? "" : "+", - xkb_atom_text(keymap->ctx, mod->name)); + xkb_atom_text(ctx, mod->name)); if (ret <= 0 || pos + ret >= sizeof(buf)) break; else pos += ret; } - return strcpy(xkb_context_get_buffer(keymap->ctx, pos + 1), buf); + return strcpy(xkb_context_get_buffer(ctx, pos + 1), buf); } const char * |