* 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/>.
*/
#include "config.h"
{
GHashTable *color_map;
GHashTable *properties;
- GtkSymbolicColorLookupFunc color_lookup_func;
- gpointer color_lookup_data;
};
static void gtk_style_properties_provider_init (GtkStyleProviderIface *iface);
if (value == NULL)
continue;
- _gtk_css_lookup_set (lookup, id, NULL, value);
+ _gtk_css_lookup_set_computed (lookup, id, NULL, value);
}
}
return g_object_new (GTK_TYPE_STYLE_PROPERTIES, NULL);
}
-void
-_gtk_style_properties_set_color_lookup_func (GtkStyleProperties *props,
- GtkSymbolicColorLookupFunc func,
- gpointer data)
-{
- GtkStylePropertiesPrivate *priv;
-
- g_return_if_fail (GTK_IS_STYLE_PROPERTIES (props));
- g_return_if_fail (func != NULL);
-
- priv = props->priv;
- g_return_if_fail (priv->color_map == NULL);
-
- priv->color_lookup_func = func;
- priv->color_lookup_data = data;
-}
-
/**
* gtk_style_properties_map_color:
* @props: a #GtkStyleProperties
g_return_if_fail (color != NULL);
priv = props->priv;
- g_return_if_fail (priv->color_lookup_func == NULL);
if (G_UNLIKELY (!priv->color_map))
priv->color_map = g_hash_table_new_full (g_str_hash,
priv = props->priv;
- if (priv->color_lookup_func)
- return priv->color_lookup_func (priv->color_lookup_data, name);
-
if (!priv->color_map)
return NULL;
PropertyData *prop;
GValue *val;
+ g_return_if_fail (G_VALUE_TYPE (value) == _gtk_css_style_property_get_computed_type (style_prop));
+
priv = props->priv;
prop = g_hash_table_lookup (priv->properties, style_prop);
return property_data_match_state (prop, state);
}
+typedef struct {
+ GtkStyleProperties *props;
+ GtkStateFlags state;
+} StyleQueryData;
+
+static const GValue *
+style_query_func (guint id,
+ gpointer data)
+{
+ StyleQueryData *query = data;
+
+ return _gtk_style_properties_peek_property (query->props,
+ _gtk_css_style_property_lookup_by_id (id),
+ query->state);
+}
+
/**
* gtk_style_properties_get_property:
* @props: a #GtkStyleProperties
GtkStateFlags state,
GValue *value)
{
+ StyleQueryData query = { props, state };
GtkStyleProperty *node;
g_return_val_if_fail (GTK_IS_STYLE_PROPERTIES (props), FALSE);
return FALSE;
}
- _gtk_style_property_query (node, props, state, value);
+ _gtk_style_property_query (node,
+ value,
+ style_query_func,
+ &query);
return TRUE;
}