gtk-css-engine r74 - in branches/bzr: . src themes/gtk-css-test/gtk-2.0



Author: robsta
Date: Fri Sep  5 11:33:48 2008
New Revision: 74
URL: http://svn.gnome.org/viewvc/gtk-css-engine?rev=74&view=rev

Log:
Fix generic querying querying of properties

Modified:
   branches/bzr/   (props changed)
   branches/bzr/src/gce-node.c
   branches/bzr/src/gce-theme.c
   branches/bzr/themes/gtk-css-test/gtk-2.0/styles.css

Modified: branches/bzr/src/gce-node.c
==============================================================================
--- branches/bzr/src/gce-node.c	(original)
+++ branches/bzr/src/gce-node.c	Fri Sep  5 11:33:48 2008
@@ -230,7 +230,7 @@
 get_attribute (GceNode const	*node, 
 	       char const	*name)
 {
-	GValue			 property;
+	GValue			 property = { 0, };
 	char const		*value;
 
 	g_assert (node && node->widget);
@@ -252,18 +252,17 @@
 	}
 
 	/* now try to find an apropriate style property */
-	g_value_unset (&property);
+	/* TODO investigate that lifecycle of `value' is ok. */
+	g_value_init (&property, G_TYPE_STRING);
+
 	gtk_widget_style_get_property (node->widget, name, &property);
-	value = NULL;
-	if (G_VALUE_HOLDS (&property, G_TYPE_BOOLEAN)) {
-		value = g_value_get_boolean (&property) ? "true" : "false";
-	} else if (G_VALUE_HOLDS (&property, G_TYPE_STRING)) {
-		value = g_value_get_string (&property);
-	} else {
-		g_warning ("Querying for properties of type `%s' is not supported yet.", 
-			   G_VALUE_TYPE_NAME (&property));
+	value = g_value_get_string (&property);
+	if (value) {
+		return value;
 	}
 
+	g_object_get_property (G_OBJECT (node->widget), name, &property);
+	value = g_value_get_string (&property);
 	return value;
 }
 

Modified: branches/bzr/src/gce-theme.c
==============================================================================
--- branches/bzr/src/gce-theme.c	(original)
+++ branches/bzr/src/gce-theme.c	Fri Sep  5 11:33:48 2008
@@ -32,6 +32,17 @@
 G_MODULE_EXPORT GtkRcStyle *	theme_create_rc_style	(void);
 G_MODULE_EXPORT const gchar *	g_module_check_init	(GModule *module);
 
+static void
+transform_boolean_string (const GValue	*src,
+			  GValue	*dst)
+{
+	if (g_value_get_boolean (src)) {
+		g_value_set_static_string (dst, "true");
+	} else {
+		g_value_set_static_string (dst, "false");
+	}
+}
+
 G_MODULE_EXPORT void 
 theme_init (GTypeModule *module)
 {
@@ -44,6 +55,9 @@
 	node_class = gce_node_get_class ();
 	vtable = gce_functions_get_vtable ();
 	ccd_init (node_class, vtable);
+
+	g_value_register_transform_func (G_TYPE_BOOLEAN, G_TYPE_STRING, 
+					 transform_boolean_string);
 }
 
 G_MODULE_EXPORT void 

Modified: branches/bzr/themes/gtk-css-test/gtk-2.0/styles.css
==============================================================================
--- branches/bzr/themes/gtk-css-test/gtk-2.0/styles.css	(original)
+++ branches/bzr/themes/gtk-css-test/gtk-2.0/styles.css	Fri Sep  5 11:33:48 2008
@@ -1,4 +1,4 @@
-
+/*
 arrow[orientation=up] {
 	background-image: url(arrow-up.png);
 }
@@ -20,7 +20,7 @@
 }
 
 option {
-	background-color: red;
+	background-image: url(arrow-down.png);
 }
 
 check {
@@ -101,4 +101,8 @@
 GtkProgressBar:prelight {
 	background-color: yellow;
 }
+*/
+check[active=true] {
+	background-image: url(foo.svg);
+}
 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]