mirror of
https://gitlab.gnome.org/GNOME/gtk.git
synced 2024-11-18 09:00:34 +00:00
GtkStyleSet: Add valist and varargs getters/setters.
This commit is contained in:
parent
2bf7483e74
commit
9fdcbd7a84
@ -20,6 +20,7 @@
|
|||||||
#include "config.h"
|
#include "config.h"
|
||||||
|
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
#include <gobject/gvaluecollector.h>
|
||||||
|
|
||||||
#include "gtkstyleprovider.h"
|
#include "gtkstyleprovider.h"
|
||||||
#include "gtkstyleset.h"
|
#include "gtkstyleset.h"
|
||||||
@ -327,6 +328,76 @@ gtk_style_set_set_property (GtkStyleSet *set,
|
|||||||
g_value_copy (value, &prop->values[state]);
|
g_value_copy (value, &prop->values[state]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
gtk_style_set_set_valist (GtkStyleSet *set,
|
||||||
|
GtkStateType state,
|
||||||
|
va_list args)
|
||||||
|
{
|
||||||
|
GtkStyleSetPrivate *priv;
|
||||||
|
const gchar *property_name;
|
||||||
|
|
||||||
|
g_return_if_fail (GTK_IS_STYLE_SET (set));
|
||||||
|
g_return_if_fail (state < GTK_STATE_LAST);
|
||||||
|
|
||||||
|
priv = GTK_STYLE_SET_GET_PRIVATE (set);
|
||||||
|
property_name = va_arg (args, const gchar *);
|
||||||
|
|
||||||
|
while (property_name)
|
||||||
|
{
|
||||||
|
PropertyNode *node;
|
||||||
|
PropertyData *prop;
|
||||||
|
gchar *error = NULL;
|
||||||
|
|
||||||
|
node = property_node_lookup (g_quark_try_string (property_name));
|
||||||
|
|
||||||
|
if (!node)
|
||||||
|
{
|
||||||
|
g_warning ("Style property \"%s\" is not registered", property_name);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
prop = g_hash_table_lookup (priv->properties,
|
||||||
|
GINT_TO_POINTER (node->property_quark));
|
||||||
|
|
||||||
|
if (!prop)
|
||||||
|
{
|
||||||
|
prop = property_data_new ();
|
||||||
|
g_hash_table_insert (priv->properties,
|
||||||
|
GINT_TO_POINTER (node->property_quark),
|
||||||
|
prop);
|
||||||
|
}
|
||||||
|
|
||||||
|
g_value_init (&prop->values[state], node->property_type);
|
||||||
|
G_VALUE_COLLECT (&prop->values[state], args, 0, &error);
|
||||||
|
|
||||||
|
if (error)
|
||||||
|
{
|
||||||
|
g_warning ("Could not set style property \"%s\": %s", property_name, error);
|
||||||
|
g_value_unset (&prop->values[state]);
|
||||||
|
g_free (error);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
property_name = va_arg (args, const gchar *);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
gtk_style_set_set (GtkStyleSet *set,
|
||||||
|
GtkStateType state,
|
||||||
|
...)
|
||||||
|
{
|
||||||
|
va_list args;
|
||||||
|
|
||||||
|
g_return_if_fail (GTK_IS_STYLE_SET (set));
|
||||||
|
g_return_if_fail (state < GTK_STATE_LAST);
|
||||||
|
|
||||||
|
va_start (args, state);
|
||||||
|
gtk_style_set_set_valist (set, state, args);
|
||||||
|
va_end (args);
|
||||||
|
}
|
||||||
|
|
||||||
gboolean
|
gboolean
|
||||||
gtk_style_set_get_property (GtkStyleSet *set,
|
gtk_style_set_get_property (GtkStyleSet *set,
|
||||||
const gchar *property,
|
const gchar *property,
|
||||||
@ -363,6 +434,71 @@ gtk_style_set_get_property (GtkStyleSet *set,
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
gtk_style_set_get_valist (GtkStyleSet *set,
|
||||||
|
GtkStateType state,
|
||||||
|
va_list args)
|
||||||
|
{
|
||||||
|
GtkStyleSetPrivate *priv;
|
||||||
|
const gchar *property_name;
|
||||||
|
|
||||||
|
g_return_if_fail (GTK_IS_STYLE_SET (set));
|
||||||
|
g_return_if_fail (state < GTK_STATE_LAST);
|
||||||
|
|
||||||
|
priv = GTK_STYLE_SET_GET_PRIVATE (set);
|
||||||
|
property_name = va_arg (args, const gchar *);
|
||||||
|
|
||||||
|
while (property_name)
|
||||||
|
{
|
||||||
|
PropertyNode *node;
|
||||||
|
PropertyData *prop;
|
||||||
|
gchar *error = NULL;
|
||||||
|
|
||||||
|
node = property_node_lookup (g_quark_try_string (property_name));
|
||||||
|
|
||||||
|
if (!node)
|
||||||
|
{
|
||||||
|
g_warning ("Style property \"%s\" is not registered", property_name);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
prop = g_hash_table_lookup (priv->properties,
|
||||||
|
GINT_TO_POINTER (node->property_quark));
|
||||||
|
|
||||||
|
if (!prop)
|
||||||
|
{
|
||||||
|
/* FIXME: Fill in default */
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
G_VALUE_LCOPY (&prop->values[state], args, 0, &error);
|
||||||
|
|
||||||
|
if (error)
|
||||||
|
{
|
||||||
|
g_warning ("Could not get style property \"%s\": %s", property_name, error);
|
||||||
|
g_free (error);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
property_name = va_arg (args, const gchar *);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
gtk_style_set_get (GtkStyleSet *set,
|
||||||
|
GtkStateType state,
|
||||||
|
...)
|
||||||
|
{
|
||||||
|
va_list args;
|
||||||
|
|
||||||
|
g_return_if_fail (GTK_IS_STYLE_SET (set));
|
||||||
|
g_return_if_fail (state < GTK_STATE_LAST);
|
||||||
|
|
||||||
|
va_start (args, state);
|
||||||
|
gtk_style_set_get_valist (set, state, args);
|
||||||
|
va_end (args);
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
gtk_style_set_unset_property (GtkStyleSet *set,
|
gtk_style_set_unset_property (GtkStyleSet *set,
|
||||||
const gchar *property,
|
const gchar *property,
|
||||||
@ -455,6 +591,5 @@ gtk_style_set_merge (GtkStyleSet *set,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#define __GTK_STYLE_SET_C__
|
#define __GTK_STYLE_SET_C__
|
||||||
#include "gtkaliasdef.c"
|
#include "gtkaliasdef.c"
|
||||||
|
@ -69,11 +69,23 @@ void gtk_style_set_set_property (GtkStyleSet *set,
|
|||||||
const gchar *property,
|
const gchar *property,
|
||||||
GtkStateType state,
|
GtkStateType state,
|
||||||
const GValue *value);
|
const GValue *value);
|
||||||
|
void gtk_style_set_set_valist (GtkStyleSet *set,
|
||||||
|
GtkStateType state,
|
||||||
|
va_list args);
|
||||||
|
void gtk_style_set_set (GtkStyleSet *set,
|
||||||
|
GtkStateType state,
|
||||||
|
...) G_GNUC_NULL_TERMINATED;
|
||||||
|
|
||||||
gboolean gtk_style_set_get_property (GtkStyleSet *set,
|
gboolean gtk_style_set_get_property (GtkStyleSet *set,
|
||||||
const gchar *property,
|
const gchar *property,
|
||||||
GtkStateType state,
|
GtkStateType state,
|
||||||
GValue *value);
|
GValue *value);
|
||||||
|
void gtk_style_set_get_valist (GtkStyleSet *set,
|
||||||
|
GtkStateType state,
|
||||||
|
va_list args);
|
||||||
|
void gtk_style_set_get (GtkStyleSet *set,
|
||||||
|
GtkStateType state,
|
||||||
|
...) G_GNUC_NULL_TERMINATED;
|
||||||
|
|
||||||
void gtk_style_set_unset_property (GtkStyleSet *set,
|
void gtk_style_set_unset_property (GtkStyleSet *set,
|
||||||
const gchar *property,
|
const gchar *property,
|
||||||
|
Loading…
Reference in New Issue
Block a user