diff options
Diffstat (limited to 'shell')
| -rw-r--r-- | shell/shell.c | 10 | 
1 files changed, 8 insertions, 2 deletions
| diff --git a/shell/shell.c b/shell/shell.c index a7bf51c4..674280f7 100644 --- a/shell/shell.c +++ b/shell/shell.c @@ -1126,7 +1126,13 @@ static void group_handle_special(GKeyFile *key_file,              ms = g_key_file_get_integer(key_file, group, key, NULL); -            fu->field_name = g_strdup(g_utf8_strchr(key, -1, '$') + 1); +            /* Old style used just the label which has to be checked by translating it, +             * and potentially could by ambiguous. +             * New style can use tag or label. If new style including a tag, +             * send both tag and label and let the hi_get_field() function use +             * key_get_components() to split it. */ +            const gchar *chk = g_utf8_strchr(key, -1, '$'); +            fu->field_name = g_strdup(key_is_flagged(chk) ? chk : chk + 1);              fu->entry = entry;              sfutbl = g_new0(ShellFieldUpdateSource, 1); @@ -1537,7 +1543,7 @@ static void module_selected_show_info_detail(GKeyFile *key_file,                  if (entry && entry->fieldfunc && value && g_str_equal(value, "...")) {                      g_free(value); -                    value = entry->fieldfunc(name); +                    value = entry->fieldfunc(keys[j]);                  }                  key_markup = | 
