PROP_SPLIT_CURSOR,
PROP_THEME_NAME,
PROP_KEY_THEME_NAME,
- PROP_MENU_BAR_ACCEL
+ PROP_MENU_BAR_ACCEL,
+ PROP_DND_DRAG_THRESHOLD,
+ PROP_FONT_NAME
};
g_param_spec_string ("gtk-theme-name",
_("Theme Name"),
_("Name of theme RC file to load"),
- NULL,
+ "Default",
G_PARAM_READWRITE),
NULL);
g_assert (result == PROP_THEME_NAME);
"F10",
G_PARAM_READWRITE),
NULL);
-
g_assert (result == PROP_MENU_BAR_ACCEL);
+
+ result = settings_install_property_parser (class,
+ g_param_spec_int ("gtk-dnd-drag-threshold",
+ _("Drag threshold"),
+ _("Number of pixels the cursor can move before dragging"),
+ 1, G_MAXINT, 8,
+ G_PARAM_READWRITE),
+ NULL);
+ g_assert (result == PROP_DND_DRAG_THRESHOLD);
+
+ result = settings_install_property_parser (class,
+ g_param_spec_string ("gtk-font-name",
+ _("Font Name"),
+ _("Name of default font to use"),
+ "Sans 10",
+ G_PARAM_READWRITE),
+ NULL);
+ g_assert (result == PROP_FONT_NAME);
+
}
static void
GParamSpec *pspec)
{
GtkSettings *settings = GTK_SETTINGS (object);
+ GType value_type = G_VALUE_TYPE (value);
+ GType fundamental_type = G_TYPE_FUNDAMENTAL (value_type);
- if (g_value_type_transformable (G_TYPE_INT, G_VALUE_TYPE (value)) ||
+ /* For enums and strings, we need to get the value as a string,
+ * not as an int, since we support using names/nicks as the setting
+ * value.
+ */
+ if ((g_value_type_transformable (G_TYPE_INT, value_type) &&
+ !(fundamental_type == G_TYPE_ENUM || fundamental_type == G_TYPE_FLAGS)) ||
g_value_type_transformable (G_TYPE_STRING, G_VALUE_TYPE (value)) ||
g_value_type_transformable (GDK_TYPE_COLOR, G_VALUE_TYPE (value)))
{
{
GValue tmp_value = { 0, };
GValue gstring_value = { 0, };
- GtkRcPropertyParser parser = g_param_spec_get_qdata (pspec,
- quark_property_parser);
+ GtkRcPropertyParser parser = (GtkRcPropertyParser) g_param_spec_get_qdata (pspec, quark_property_parser);
g_value_init (&gstring_value, G_TYPE_GSTRING);
if (free_gstring)
g_string_free (gstring, TRUE);
}
- else if (!G_VALUE_HOLDS (src_value, G_TYPE_GSTRING) &&
- g_value_type_transformable (G_VALUE_TYPE (src_value), G_VALUE_TYPE (dest_value)))
+ else if (G_VALUE_HOLDS (src_value, G_TYPE_GSTRING))
+ {
+ if (G_VALUE_HOLDS (dest_value, G_TYPE_STRING))
+ {
+ GString *gstring = g_value_get_boxed (src_value);
+
+ g_value_set_string (dest_value, gstring ? gstring->str : NULL);
+ success = !g_param_value_validate (pspec, dest_value);
+ }
+ }
+ else if (g_value_type_transformable (G_VALUE_TYPE (src_value), G_VALUE_TYPE (dest_value)))
success = g_param_value_convert (pspec, src_value, dest_value, TRUE);
return success;
GtkSettingsValue *qvalue)
{
GValue tmp_value = { 0, };
- GtkRcPropertyParser parser = g_param_spec_get_qdata (pspec, quark_property_parser);
+ GtkRcPropertyParser parser = (GtkRcPropertyParser) g_param_spec_get_qdata (pspec, quark_property_parser);
g_value_init (&tmp_value, G_PARAM_SPEC_VALUE_TYPE (pspec));
if (_gtk_settings_parse_convert (parser, &qvalue->value,
g_object_set_property (G_OBJECT (data), pspec->name, &tmp_value);
else
{
- gchar *debug = g_strdup_value_contents (&tmp_value);
+ gchar *debug = g_strdup_value_contents (&qvalue->value);
g_message ("%s: failed to retrieve property `%s' of type `%s' from rc file value \"%s\" of type `%s'",
qvalue->origin,
g_object_freeze_notify (node->data);
g_object_class_install_property (G_OBJECT_CLASS (class), ++class_n_properties, pspec);
- g_param_spec_set_qdata (pspec, quark_property_parser, parser);
+ g_param_spec_set_qdata (pspec, quark_property_parser, (gpointer) parser);
for (node = object_list; node; node = node->next)
{
void
gtk_settings_install_property (GParamSpec *pspec)
{
- GtkRcPropertyParser parser = NULL;
+ GtkRcPropertyParser parser;
g_return_if_fail (G_IS_PARAM_SPEC (pspec));
}
void
-gtk_settings_set_property_value (GtkSettings *settings,
- const gchar *prop_name,
- const GtkSettingsValue *new_value)
+gtk_settings_set_property_value (GtkSettings *settings,
+ const gchar *prop_name,
+ const GtkSettingsValue *new_value)
{
GtkSettingsValue *qvalue;
GParamSpec *pspec;
name = g_strdup (prop_name);
g_strcanon (name, G_CSET_A_2_Z G_CSET_a_2_z G_CSET_DIGITS "-", '-');
- name_quark = g_quark_try_string (name);
- if (name_quark)
- g_free (name);
- else
- name_quark = g_quark_from_string (name);
+ name_quark = g_quark_from_string (name);
+ g_free (name);
qvalue = g_datalist_id_get_data (&settings->queued_settings, name_quark);
if (!qvalue)
return success;
}
-
void
_gtk_settings_handle_event (GdkEventSetting *event)
{