Rémi Bernon (@rbernon) commented about dlls/winex11.drv/keyboard.c:
if (!XGetAtomNames( display, xkb_desc->names->groups, count, names )) count = 0; for (int i = 0; i < count; i++) { - TRACE( "group %u name %s\n", i, debugstr_a(names[i]) ); + const char *layout, *variant = NULL; + LANGID lang; + + if (names[i] && find_xkb_layout_variant( names[i], &layout, &variant )) + { + lang = langid_from_xkb_layout( layout ); + if (i == xkb_group) xkb_lang = lang; + + TRACE( "Found group %u with name %s -> layout %s:%s, lang %04x\n", i, debugstr_a(names[i]), + debugstr_a(layout), debugstr_a(variant), lang ); + } XFree( names[i] );
I wondered before but now that you added one nesting level, I think it'd be better to avoid it and the question is: can names[i] be NULL? If yes I think a simple `if (!names[i]) continue;` is more readable than an extra indentation level. -- https://gitlab.winehq.org/wine/wine/-/merge_requests/10550#note_136792