summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--panels/keyboard/cc-keyboard-item.c19
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);