Handle NULL string properties in bindings
authorMatthias Clasen <mclasen@redhat.com>
Wed, 21 Apr 2010 18:47:32 +0000 (14:47 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Wed, 21 Apr 2010 18:49:05 +0000 (14:49 -0400)
Admittely, we just handle them by failing the conversion...

gio/gsettings-mapping.c
gio/gsettings.c
gio/tests/gsettings.c

index bdd2c9c..0290f6f 100644 (file)
@@ -365,7 +365,9 @@ g_settings_set_mapping (const GValue       *value,
 
   else if (G_VALUE_HOLDS_STRING (value))
     {
-      if (g_variant_type_equal (expected_type, G_VARIANT_TYPE_STRING))
+      if (g_value_get_string (value) == NULL)
+        return NULL;
+      else if (g_variant_type_equal (expected_type, G_VARIANT_TYPE_STRING))
         return g_variant_new_string (g_value_get_string (value));
       else if (g_variant_type_equal (expected_type, G_VARIANT_TYPE_OBJECT_PATH))
         return g_variant_new_object_path (g_value_get_string (value));
index 26c7515..210a73c 100644 (file)
@@ -1233,9 +1233,9 @@ g_settings_binding_property_changed (GObject          *object,
  * The binding uses the default GIO mapping functions to map
  * between the settings and property values. These functions
  * handle booleans, numeric types and string types in a
- * straightforward way. Use g_settings_bind_with_mapping()
- * if you need a custom mapping, or map between types that
- * are not supported by the default mapping functions.
+ * straightforward way. Use g_settings_bind_with_mapping() if
+ * you need a custom mapping, or map between types that are not
+ * supported by the default mapping functions.
  *
  * Unless the @flags include %G_SETTINGS_BIND_NO_SENSITIVITY, this
  * function also establishes a binding between the writability of
index d04a052..484efac 100644 (file)
@@ -672,7 +672,6 @@ G_DEFINE_TYPE (TestObject, test_object, G_TYPE_OBJECT)
 static void
 test_object_init (TestObject *object)
 {
-  object->no_write_prop = "";
 }
 
 static void