projects
/
platform
/
upstream
/
glib.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
GApplication: Plug a memory leak
[platform/upstream/glib.git]
/
gio
/
gsettings-mapping.c
diff --git
a/gio/gsettings-mapping.c
b/gio/gsettings-mapping.c
index
f83e238
..
12b7f34
100644
(file)
--- a/
gio/gsettings-mapping.c
+++ b/
gio/gsettings-mapping.c
@@
-12,9
+12,7
@@
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
+ * License along with this library; if not, see <http://www.gnu.org/licenses/>.
*
* Author: Vincent Untz <vuntz@gnome.org>
*/
*
* Author: Vincent Untz <vuntz@gnome.org>
*/
@@
-346,7
+344,7
@@
g_settings_set_mapping (const GValue *value,
if (g_variant_type_equal (expected_type, G_VARIANT_TYPE_BYTE))
{
if (G_VALUE_HOLDS_CHAR (value))
if (g_variant_type_equal (expected_type, G_VARIANT_TYPE_BYTE))
{
if (G_VALUE_HOLDS_CHAR (value))
- return g_variant_new_byte (g_value_get_char (value));
+ return g_variant_new_byte (g_value_get_
s
char (value));
else
return g_variant_new_byte (g_value_get_uchar (value));
}
else
return g_variant_new_byte (g_value_get_uchar (value));
}
@@
-377,6
+375,14
@@
g_settings_set_mapping (const GValue *value,
return g_variant_new_signature (g_value_get_string (value));
}
return g_variant_new_signature (g_value_get_string (value));
}
+ else if (G_VALUE_HOLDS (value, G_TYPE_STRV))
+ {
+ if (g_value_get_boxed (value) == NULL)
+ return NULL;
+ return g_variant_new_strv ((const gchar **) g_value_get_boxed (value),
+ -1);
+ }
+
else if (G_VALUE_HOLDS_ENUM (value))
{
GEnumValue *enumval;
else if (G_VALUE_HOLDS_ENUM (value))
{
GEnumValue *enumval;
@@
-445,7
+451,7
@@
g_settings_get_mapping (GValue *value,
if (G_VALUE_HOLDS_UCHAR (value))
g_value_set_uchar (value, g_variant_get_byte (variant));
else if (G_VALUE_HOLDS_CHAR (value))
if (G_VALUE_HOLDS_UCHAR (value))
g_value_set_uchar (value, g_variant_get_byte (variant));
else if (G_VALUE_HOLDS_CHAR (value))
- g_value_set_
char (value, (gchar)
g_variant_get_byte (variant));
+ g_value_set_
schar (value, (gint8)
g_variant_get_byte (variant));
else
return FALSE;
return TRUE;
else
return FALSE;
return TRUE;
@@
-498,7
+504,13
@@
g_settings_get_mapping (GValue *value,
}
else if (g_variant_is_of_type (variant, G_VARIANT_TYPE ("as")))
{
}
else if (g_variant_is_of_type (variant, G_VARIANT_TYPE ("as")))
{
- if (G_VALUE_HOLDS_FLAGS (value))
+ if (G_VALUE_HOLDS (value, G_TYPE_STRV))
+ {
+ g_value_take_boxed (value, g_variant_dup_strv (variant, NULL));
+ return TRUE;
+ }
+
+ else if (G_VALUE_HOLDS_FLAGS (value))
{
GFlagsClass *fclass;
GFlagsValue *fvalue;
{
GFlagsClass *fclass;
GFlagsValue *fvalue;
@@
-569,6
+581,8
@@
g_settings_mapping_is_compatible (GType gvalue_type,
g_variant_type_equal (variant_type, G_VARIANT_TYPE ("ay")) ||
g_variant_type_equal (variant_type, G_VARIANT_TYPE_OBJECT_PATH) ||
g_variant_type_equal (variant_type, G_VARIANT_TYPE_SIGNATURE));
g_variant_type_equal (variant_type, G_VARIANT_TYPE ("ay")) ||
g_variant_type_equal (variant_type, G_VARIANT_TYPE_OBJECT_PATH) ||
g_variant_type_equal (variant_type, G_VARIANT_TYPE_SIGNATURE));
+ else if (gvalue_type == G_TYPE_STRV)
+ ok = g_variant_type_equal (variant_type, G_VARIANT_TYPE ("as"));
else if (G_TYPE_IS_ENUM (gvalue_type))
ok = g_variant_type_equal (variant_type, G_VARIANT_TYPE_STRING);
else if (G_TYPE_IS_FLAGS (gvalue_type))
else if (G_TYPE_IS_ENUM (gvalue_type))
ok = g_variant_type_equal (variant_type, G_VARIANT_TYPE_STRING);
else if (G_TYPE_IS_FLAGS (gvalue_type))