}
static bool
-AddIndicatorName(KeyNamesInfo *info, struct xkb_keymap *keymap,
+AddIndicatorName(KeyNamesInfo *info, struct xkb_keymap *keymap, unsigned merge,
IndicatorNameInfo *new)
{
IndicatorNameInfo *old;
bool replace;
- replace = (new->defs.merge == MergeReplace) ||
- (new->defs.merge == MergeOverride);
+ replace = (merge == MergeReplace) || (merge == MergeOverride);
old = FindIndicatorByName(info, new->name);
if (old)
{
{
if (merge != MergeDefault)
led->defs.merge = merge;
- if (!AddIndicatorName(into, keymap, led))
+ if (!AddIndicatorName(into, keymap, led->defs.merge, led))
into->errorCount++;
next = (IndicatorNameInfo *) led->defs.next;
}
static int
HandleIndicatorNameDef(IndicatorNameDef *def, struct xkb_keymap *keymap,
- KeyNamesInfo *info)
+ unsigned merge, KeyNamesInfo *info)
{
IndicatorNameInfo ii;
ExprResult tmp;
ii.name = xkb_atom_intern(keymap->ctx, tmp.str);
free(tmp.str);
ii.virtual = def->virtual;
- if (!AddIndicatorName(info, keymap, &ii))
+ if (!AddIndicatorName(info, keymap, merge, &ii))
return false;
return true;
}
info->errorCount++;
break;
case StmtIndicatorNameDef: /* e.g. indicator 1 = "Caps Lock"; */
- if (!HandleIndicatorNameDef((IndicatorNameDef *) stmt, keymap, info))
+ if (!HandleIndicatorNameDef((IndicatorNameDef *) stmt, keymap,
+ merge, info))
info->errorCount++;
break;
case StmtInterpDef: