diff options
-rw-r--r-- | panels/keyboard/cc-keyboard-item.c | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/panels/keyboard/cc-keyboard-item.c b/panels/keyboard/cc-keyboard-item.c index f68d64a13..a970a18f6 100644 --- a/panels/keyboard/cc-keyboard-item.c +++ b/panels/keyboard/cc-keyboard-item.c @@ -131,13 +131,18 @@ settings_set_binding (GSettings *settings, g_settings_set_string (settings, key, value ? value : ""); else if (g_variant_is_of_type (variant, G_VARIANT_TYPE_STRING_ARRAY)) { - char **str_array = g_new0 (char *, 2); - - /* clear any additional bindings by only setting the first one */ - *str_array = g_strdup (value); - - g_settings_set_strv (settings, key, (const char * const *)str_array); - g_strfreev (str_array); + if (value == NULL || *value == '\0') + g_settings_set_strv (settings, key, NULL); + else + { + char **str_array = g_new0 (char *, 2); + + /* clear any additional bindings by only setting the first one */ + *str_array = g_strdup (value); + + g_settings_set_strv (settings, key, (const char * const *)str_array); + g_strfreev (str_array); + } } g_variant_unref (variant); |