gtk-css-engine r110 - in trunk: . src



Author: robsta
Date: Tue Sep 16 09:45:50 2008
New Revision: 110
URL: http://svn.gnome.org/viewvc/gtk-css-engine?rev=110&view=rev

Log:
* src/gce-node.c:
* src/gce-node.h:
* src/gce-style.c:
Make node implementation self contained to the theme engine.


Modified:
   trunk/   (props changed)
   trunk/ChangeLog
   trunk/src/gce-node.c
   trunk/src/gce-node.h
   trunk/src/gce-style.c

Modified: trunk/src/gce-node.c
==============================================================================
--- trunk/src/gce-node.c	(original)
+++ trunk/src/gce-node.c	Tue Sep 16 09:45:50 2008
@@ -20,6 +20,32 @@
 #include <string.h>
 #include "gce-node.h"
 
+/*
+ * TODO: split into load- and run-time variants?
+ */
+struct GceNode_ {
+	ccd_node_t		 parent;
+	GtkWidget		*widget;
+	/* custom attributes { */
+	char const		*class_name;
+	char const		*pseudo_class;
+	char const		*gap;
+	char const		*shadow;
+	char const		*orientation;
+	char const		*edge;
+	char const		*expander_style;
+	enum {
+		UNSET,
+		CONTAINER,
+		PRIMITIVE,
+		TYPE 
+	} flavor;
+	union {
+		char const	*primitive;
+		GType		 gtype;
+	} impl;
+};
+
 static struct {
 	GceNode nodes[GCE_NODE_CACHE_SIZE];
 	int	cursor;
@@ -33,8 +59,8 @@
 	return &_node_cache.nodes[_node_cache.cursor];
 }
 
-GceNode *
-gce_node_cache_fetch_node (void)
+static GceNode *
+fetch_node ()
 {
 	GceNode *node;
 
@@ -47,6 +73,55 @@
 	return node;
 }
 
+GceNode *
+gce_node_cache_fetch_node (GtkWidget	*widget, 
+			   char const	*class_name,
+			   char const	*pseudo_class,
+			   char const	*shadow,
+			   char const	*orientation,
+			   char const	*gap,
+			   char const	*edge,
+			   char const	*expander_style)
+{
+	GceNode *node;
+
+	node = fetch_node ();
+
+	node->widget = widget;
+	node->class_name = class_name;
+	node->pseudo_class = pseudo_class;
+	node->gap = gap;
+	node->shadow = shadow;
+	node->orientation = orientation;
+	node->edge = edge;
+	node->expander_style = expander_style;
+	node->flavor = UNSET;	
+
+	return node;
+}
+
+GceNode *
+gce_node_cache_fetch_primitive_node (GtkWidget	*widget, 
+				     char const	*class_name,
+				     char const	*pseudo_class,
+				     char const	*shadow,
+				     char const	*orientation,
+				     char const	*gap,
+				     char const	*edge,
+				     char const	*expander_style,
+				     char const	*primitive)
+{
+	GceNode *node;
+
+	node = gce_node_cache_fetch_node (widget, class_name, pseudo_class,
+					  shadow, orientation, gap, edge, 
+					  expander_style);
+	node->flavor = PRIMITIVE;	
+	node->impl.primitive = primitive;
+
+	return node;
+}
+
 void
 gce_node_cache_release_node (GceNode *node)
 {
@@ -96,17 +171,16 @@
 	case CONTAINER:
 		container = gtk_widget_get_parent (node->widget);
 		if (container) {
-			container_node = gce_node_cache_fetch_node ();
-			container_node->flavor = CONTAINER;
+			container_node = fetch_node ();
 			container_node->widget = (GtkWidget *) g_object_ref (G_OBJECT (container));
+			container_node->flavor = CONTAINER;
 			container_node->impl.gtype = G_OBJECT_TYPE (G_OBJECT (container));
 		}
 		break;
 	case PRIMITIVE:
-		container_node = gce_node_cache_fetch_node ();
-		container_node->flavor = UNSET;
+		container_node = fetch_node ();
 		container_node->widget = (GtkWidget *) g_object_ref (G_OBJECT (node->widget));
-		container_node->impl.primitive = NULL;
+		container_node->flavor = UNSET;
 		break;
 	case TYPE:
 		g_assert_not_reached ();
@@ -132,10 +206,11 @@
 			base_node = NULL;
 		} else {
 			/* inherit from superclass widget */
-			base_node = gce_node_cache_fetch_node ();
-			base_node->widget = (GtkWidget *) g_object_ref (node->widget);
+			base_node = fetch_node ();
+			base_node->widget = (GtkWidget *) g_object_ref (G_OBJECT (node->widget));
 			base_node->flavor = TYPE;
 			base_node->impl.gtype = g_type_parent (G_OBJECT_TYPE (G_OBJECT (node->widget)));
+
 		}
 		break;
 	case CONTAINER:
@@ -144,8 +219,8 @@
 			base_node = NULL;
 		} else {
 			/* inherit from superclass widget */
-			base_node = gce_node_cache_fetch_node ();
-			base_node->widget = (GtkWidget *) g_object_ref (node->widget);
+			base_node = fetch_node ();
+			base_node->widget = (GtkWidget *) g_object_ref (G_OBJECT (node->widget));
 			base_node->flavor = CONTAINER;
 			base_node->impl.gtype = g_type_parent (node->impl.gtype);
 		} 
@@ -159,9 +234,9 @@
 			base_node = NULL;
 		} else {
 			/* inherit from superclass widget */
-			base_node = gce_node_cache_fetch_node ();
-			base_node->widget = (GtkWidget *) g_object_ref (node->widget);
-			base_node->flavor = TYPE;
+			base_node = fetch_node ();
+			base_node->widget = (GtkWidget *) g_object_ref (G_OBJECT (node->widget));
+			base_node->flavor = TYPE, 
 			base_node->impl.gtype = g_type_parent (node->impl.gtype);
 		} 
 		break;
@@ -344,3 +419,15 @@
 	return &_node_class;
 }
 
+GtkWidget *
+gce_node_get_widget (const GceNode *node)
+{
+	return node->widget;
+}
+
+char const *
+gce_node_get_primitive (const GceNode *node)
+{
+	node->class_name;
+}
+

Modified: trunk/src/gce-node.h
==============================================================================
--- trunk/src/gce-node.h	(original)
+++ trunk/src/gce-node.h	Tue Sep 16 09:45:50 2008
@@ -28,39 +28,33 @@
 
 #define GCE_NODE_CACHE_SIZE 24
 
-/*
- * TODO: split into load- and run-time variants?
- */
-typedef struct {
-	ccd_node_t		 parent;
-	GtkWidget		*widget;
-	/* custom attributes { */
-	char const		*class_name;
-	char const		*pseudo_class;
-	char const		*gap;
-	char const		*shadow;
-	char const		*orientation;
-	char const		*edge;
-	char const		*expander_style;
-	/* } */
-	enum {
-		UNSET,
-		CONTAINER,
-		PRIMITIVE,
-		TYPE
-	} flavor;
-	union {
-		char const	*primitive;
-		GType		 gtype;
-	} impl;
-} GceNode;
-
-GceNode *	gce_node_cache_get_top_node	(void);
-GceNode *	gce_node_cache_fetch_node	(void);
-void		gce_node_cache_release_node	(GceNode *node);
+typedef struct GceNode_ GceNode;
+
+GceNode * gce_node_cache_fetch_primitive_node (GtkWidget *widget, 
+					       char const *class_name,
+					       char const *pseudo_class,
+					       char const *shadow,
+					       char const *orientation,
+					       char const *gap,
+					       char const *edge,
+					       char const *expander_style,
+					       char const *primitive);
+GceNode * gce_node_cache_fetch_node (GtkWidget *widget, 
+				     char const *class_name,
+				     char const *pseudo_class,
+				     char const *shadow,
+				     char const *orientation,
+				     char const *gap,
+				     char const *edge,
+				     char const *expander_style);
+GceNode * gce_node_cache_get_top_node (void);
+void gce_node_cache_release_node (GceNode *node);
 
 ccd_node_class_t const * gce_node_get_class (void);
 
+GtkWidget *	gce_node_get_widget	(const GceNode *node);
+char const *	gce_node_get_primitive	(const GceNode *node);
+
 G_END_DECLS
 
 #endif /* GCE_NODE_H */

Modified: trunk/src/gce-style.c
==============================================================================
--- trunk/src/gce-style.c	(original)
+++ trunk/src/gce-style.c	Tue Sep 16 09:45:50 2008
@@ -56,7 +56,7 @@
 
 	if (!status) {
 		g_warning ("Un-themed widget `%s', primitive `%s'.", 
-			   G_OBJECT_TYPE_NAME (G_OBJECT (node->widget)), base->impl.primitive);
+			   G_OBJECT_TYPE_NAME (G_OBJECT (gce_node_get_widget (node))), gce_node_get_primitive (node));
 		ccd_selector_group_free (group);
 		group = NULL;
 	}
@@ -204,18 +204,16 @@
 	GceNode *node;
 	GceNode *base;
 
-	base = gce_node_cache_fetch_node ();
-	base->widget = widget;
-	base->class_name = gce_maps_get_detail (detail);
-	base->pseudo_class = gce_maps_get_state (state);
-	base->flavor = PRIMITIVE;
-	base->impl.primitive = "hline";
-
-	node = gce_node_cache_fetch_node ();
-	node->widget = widget;
-	node->class_name = base->class_name;
-	node->pseudo_class = base->pseudo_class;
-	node->flavor = UNSET;
+	base = gce_node_cache_fetch_primitive_node (widget, 
+			gce_maps_get_detail (detail),
+			gce_maps_get_state (state),
+			NULL, NULL, NULL, NULL, NULL,
+			"hline");
+
+	node = gce_node_cache_fetch_node (widget,
+			gce_maps_get_detail (detail),
+			gce_maps_get_state (state),
+			NULL, NULL, NULL, NULL, NULL);
 
 	line (self, node, base, window, area, widget, x1, x2, y, y);
 
@@ -237,18 +235,16 @@
 	GceNode *node;
 	GceNode *base;
 
-	base = gce_node_cache_fetch_node ();
-	base->widget = widget;
-	base->class_name = gce_maps_get_detail (detail);
-	base->pseudo_class = gce_maps_get_state (state);
-	base->flavor = PRIMITIVE;
-	base->impl.primitive = "vline";
-
-	node = gce_node_cache_fetch_node ();
-	node->widget = widget;
-	node->class_name = base->class_name;
-	node->pseudo_class = base->pseudo_class;
-	node->flavor = UNSET;
+	base = gce_node_cache_fetch_primitive_node (widget, 
+			gce_maps_get_detail (detail),
+			gce_maps_get_state (state),
+			NULL, NULL, NULL, NULL, NULL,
+			"vline");
+
+	node = gce_node_cache_fetch_node (widget,
+			gce_maps_get_detail (detail),
+			gce_maps_get_state (state),
+			NULL, NULL, NULL, NULL, NULL);
 
 	line (self, node, base, window, area, widget, x, x, y1, y2);
 
@@ -273,20 +269,18 @@
 	GceNode *node;
 	GceNode *base;
 
-	base = gce_node_cache_fetch_node ();
-	base->widget = widget;
-	base->class_name = gce_maps_get_detail (detail);
-	base->pseudo_class = gce_maps_get_state (state);
-	base->shadow = gce_maps_get_shadow (shadow);
-	base->flavor = PRIMITIVE;
-	base->impl.primitive = "shadow";
-
-	node = gce_node_cache_fetch_node ();
-	node->widget = widget;
-	node->class_name = base->class_name;
-	node->pseudo_class = base->pseudo_class;
-	node->shadow = base->shadow;
-	node->flavor = UNSET;
+	base = gce_node_cache_fetch_primitive_node (widget, 
+			gce_maps_get_detail (detail),
+			gce_maps_get_state (state),
+			gce_maps_get_shadow (shadow),
+			NULL, NULL, NULL, NULL,
+			"shadow");
+
+	node = gce_node_cache_fetch_node (widget, 
+			gce_maps_get_detail (detail),
+			gce_maps_get_state (state),
+			gce_maps_get_shadow (shadow),
+			NULL, NULL, NULL, NULL);
 
 	rectangle (self, node, base, window, area, widget, 
 		   x, y, width, height, TRUE);
@@ -311,20 +305,18 @@
 	GceNode *node;
 	GceNode *base;
 
-	base = gce_node_cache_fetch_node ();
-	base->widget = widget;
-	base->class_name = gce_maps_get_detail (detail);
-	base->pseudo_class = gce_maps_get_state (state);
-	base->shadow = gce_maps_get_shadow (shadow);
-	base->flavor = PRIMITIVE;
-	base->impl.primitive = "box";
-
-	node = gce_node_cache_fetch_node ();
-	node->widget = widget;
-	node->class_name = base->class_name;
-	node->pseudo_class = base->pseudo_class;
-	node->shadow = base->shadow;
-	node->flavor = UNSET;
+	base = gce_node_cache_fetch_primitive_node (widget, 
+			gce_maps_get_detail (detail),
+			gce_maps_get_state (state),
+			gce_maps_get_shadow (shadow),
+			NULL, NULL, NULL, NULL,
+			"box");
+
+	node = gce_node_cache_fetch_node (widget, 
+			gce_maps_get_detail (detail),
+			gce_maps_get_state (state),
+			gce_maps_get_shadow (shadow),
+			NULL, NULL, NULL, NULL);
 
 	rectangle (self, node, base, window, area, widget,
 		   x, y, width, height, TRUE);
@@ -349,20 +341,18 @@
 	GceNode *node;
 	GceNode *base;
 
-	base = gce_node_cache_fetch_node ();
-	base->widget = widget;
-	base->class_name = gce_maps_get_detail (detail);
-	base->pseudo_class = gce_maps_get_state (state);
-	base->shadow = gce_maps_get_shadow (shadow);
-	base->flavor = PRIMITIVE;
-	base->impl.primitive = "flatbox";
-
-	node = gce_node_cache_fetch_node ();
-	node->widget = widget;
-	node->class_name = base->class_name;
-	node->pseudo_class = base->pseudo_class;
-	node->shadow = base->shadow;
-	node->flavor = UNSET;
+	base = gce_node_cache_fetch_primitive_node (widget, 
+			gce_maps_get_detail (detail),
+			gce_maps_get_state (state),
+			gce_maps_get_shadow (shadow),
+			NULL, NULL, NULL, NULL,
+			"flatbox");
+
+	node = gce_node_cache_fetch_node (widget, 
+			gce_maps_get_detail (detail),
+			gce_maps_get_state (state),
+			gce_maps_get_shadow (shadow),
+			NULL, NULL, NULL, NULL);
 
 	rectangle (self, node, base, window, area, widget, 
 		   x, y, width, height, TRUE);
@@ -387,20 +377,18 @@
 	GceNode *node;
 	GceNode *base;
 
-	base = gce_node_cache_fetch_node ();
-	base->widget = widget;
-	base->class_name = gce_maps_get_detail (detail);
-	base->pseudo_class = gce_maps_get_state (state);
-	base->shadow = gce_maps_get_shadow (shadow);
-	base->flavor = PRIMITIVE;
-	base->impl.primitive = "check";
-
-	node = gce_node_cache_fetch_node ();
-	node->widget = widget;
-	node->class_name = base->class_name;
-	node->pseudo_class = base->pseudo_class;
-	node->shadow = base->shadow;
-	node->flavor = UNSET;
+	base = gce_node_cache_fetch_primitive_node (widget, 
+			gce_maps_get_detail (detail),
+			gce_maps_get_state (state),
+			gce_maps_get_shadow (shadow),
+			NULL, NULL, NULL, NULL,
+			"check");
+
+	node = gce_node_cache_fetch_node (widget, 
+			gce_maps_get_detail (detail),
+			gce_maps_get_state (state),
+			gce_maps_get_shadow (shadow),
+			NULL, NULL, NULL, NULL);
 
 	rectangle (self, node, base, window, area, widget, 
 		   x, y, width, height, TRUE);
@@ -425,20 +413,18 @@
 	GceNode *node;
 	GceNode *base;
 
-	base = gce_node_cache_fetch_node ();
-	base->widget = widget;
-	base->class_name = gce_maps_get_detail (detail);
-	base->pseudo_class = gce_maps_get_state (state);
-	base->shadow = gce_maps_get_shadow (shadow);
-	base->flavor = PRIMITIVE;
-	base->impl.primitive = "option";
-
-	node = gce_node_cache_fetch_node ();
-	node->widget = widget;
-	node->class_name = base->class_name;
-	node->pseudo_class = base->pseudo_class;
-	node->shadow = base->shadow;
-	node->flavor = UNSET;
+	base = gce_node_cache_fetch_primitive_node (widget, 
+			gce_maps_get_detail (detail),
+			gce_maps_get_state (state),
+			gce_maps_get_shadow (shadow),
+			NULL, NULL, NULL, NULL,
+			"option");
+
+	node = gce_node_cache_fetch_node (widget, 
+			gce_maps_get_detail (detail),
+			gce_maps_get_state (state),
+			gce_maps_get_shadow (shadow),
+			NULL, NULL, NULL, NULL);
 
 	rectangle (self, node, base, window, area, widget, 
 		   x, y, width, height, TRUE);
@@ -466,21 +452,18 @@
 	GceNode *node;
 	GceNode *base;
 
-	base = gce_node_cache_fetch_node ();
-	base->widget = widget;
-	base->class_name = gce_maps_get_detail (detail);
-	base->pseudo_class = gce_maps_get_state (state);
-	base->gap = gce_maps_get_position (gap_side);
-	base->shadow = gce_maps_get_shadow (shadow);
-	base->flavor = PRIMITIVE;
-	base->impl.primitive = "shadow";
-
-	node = gce_node_cache_fetch_node ();
-	node->widget = widget;
-	node->class_name = base->class_name;
-	node->pseudo_class = base->pseudo_class;
-	node->shadow = base->shadow;
-	node->flavor = UNSET;
+	base = gce_node_cache_fetch_primitive_node (widget, 
+			gce_maps_get_detail (detail),
+			gce_maps_get_state (state),
+			gce_maps_get_shadow (shadow),
+			NULL, gce_maps_get_position (gap_side), NULL, NULL,
+			"shadow");
+
+	node = gce_node_cache_fetch_node (widget, 
+			gce_maps_get_detail (detail),
+			gce_maps_get_state (state),
+			gce_maps_get_shadow (shadow),
+			NULL, gce_maps_get_position (gap_side), NULL, NULL);
 
 	gap (self, node, base, window, area, widget, 
 	     x, y, width, height, gap_side, gap_start, gap_width);
@@ -508,21 +491,18 @@
 	GceNode *node;
 	GceNode *base;
 
-	base = gce_node_cache_fetch_node ();
-	base->widget = widget;
-	base->class_name = gce_maps_get_detail (detail);
-	base->pseudo_class = gce_maps_get_state (state);
-	base->gap = gce_maps_get_position (gap_side);
-	base->shadow = gce_maps_get_shadow (shadow);
-	base->flavor = PRIMITIVE;
-	base->impl.primitive = "box";
-
-	node = gce_node_cache_fetch_node ();
-	node->widget = widget;
-	node->class_name = base->class_name;
-	node->pseudo_class = base->pseudo_class;
-	node->shadow = base->shadow;
-	node->flavor = UNSET;
+	base = gce_node_cache_fetch_primitive_node (widget, 
+			gce_maps_get_detail (detail),
+			gce_maps_get_state (state),
+			gce_maps_get_shadow (shadow),
+			NULL, gce_maps_get_position (gap_side), NULL, NULL,
+			"box");
+
+	node = gce_node_cache_fetch_node (widget, 
+			gce_maps_get_detail (detail),
+			gce_maps_get_state (state),
+			gce_maps_get_shadow (shadow),
+			NULL, gce_maps_get_position (gap_side), NULL, NULL);
 
 	gap (self, node, base, window, area, widget, 
 	     x, y, width, height, gap_side, gap_start, gap_width);
@@ -549,21 +529,18 @@
 	GceNode *base;
 	gint	 gap_width;
 
-	base = gce_node_cache_fetch_node ();
-	base->widget = widget;
-	base->class_name = gce_maps_get_detail (detail);
-	base->pseudo_class = gce_maps_get_state (state);
-	base->gap = gce_maps_get_position (gap_side);
-	base->shadow = gce_maps_get_shadow (shadow);
-	base->flavor = PRIMITIVE;
-	base->impl.primitive = "extension";
-
-	node = gce_node_cache_fetch_node ();
-	node->widget = widget;
-	node->class_name = base->class_name;
-	node->pseudo_class = base->pseudo_class;
-	node->shadow = base->shadow;
-	node->flavor = UNSET;
+	base = gce_node_cache_fetch_primitive_node (widget, 
+			gce_maps_get_detail (detail),
+			gce_maps_get_state (state),
+			gce_maps_get_shadow (shadow),
+			NULL, gce_maps_get_position (gap_side), NULL, NULL,
+			"extension");
+
+	node = gce_node_cache_fetch_node (widget, 
+			gce_maps_get_detail (detail),
+			gce_maps_get_state (state),
+			gce_maps_get_shadow (shadow),
+			NULL, gce_maps_get_position (gap_side), NULL, NULL);
 
 	switch (gap_side) {
 	case GTK_POS_LEFT:
@@ -600,22 +577,20 @@
 	GceNode *node;
 	GceNode *base;
 
-	base = gce_node_cache_fetch_node ();
-	base->widget = widget;
-	base->class_name = gce_maps_get_detail (detail);
-	base->pseudo_class = gce_maps_get_state (state);
-	base->shadow = gce_maps_get_shadow (shadow);
-	base->orientation = gce_maps_get_orientation (orientation);
-	base->flavor = PRIMITIVE;
-	base->impl.primitive = "slider";
-
-	node = gce_node_cache_fetch_node ();
-	node->widget = widget;
-	node->class_name = base->class_name;
-	node->pseudo_class = base->pseudo_class;
-	node->shadow = base->shadow;
-	node->orientation = base->orientation;
-	node->flavor = UNSET;
+	base = gce_node_cache_fetch_primitive_node (widget,
+			gce_maps_get_detail (detail),
+			gce_maps_get_state (state),
+			gce_maps_get_shadow (shadow),
+			gce_maps_get_orientation (orientation),
+			NULL, NULL, NULL,
+			"slider");
+
+	node = gce_node_cache_fetch_node (widget, 
+			gce_maps_get_detail (detail),
+			gce_maps_get_state (state),
+			gce_maps_get_shadow (shadow),
+			gce_maps_get_orientation (orientation),
+			NULL, NULL, NULL);
 
 	rectangle (self, node, base, window, area, widget, 
 		   x, y, width, height, TRUE);
@@ -641,22 +616,20 @@
 	GceNode *node;
 	GceNode *base;
 
-	base = gce_node_cache_fetch_node ();
-	base->widget = widget;
-	base->class_name = gce_maps_get_detail (detail);
-	base->pseudo_class = gce_maps_get_state (state);
-	base->shadow = gce_maps_get_shadow (shadow);
-	base->orientation = gce_maps_get_orientation (orientation);
-	base->flavor = PRIMITIVE;
-	base->impl.primitive = "handle";
-
-	node = gce_node_cache_fetch_node ();
-	node->widget = widget;
-	node->class_name = base->class_name;
-	node->pseudo_class = base->pseudo_class;
-	node->shadow = base->shadow;
-	node->orientation = base->orientation;
-	node->flavor = UNSET;
+	base = gce_node_cache_fetch_primitive_node (widget,
+			gce_maps_get_detail (detail),
+			gce_maps_get_state (state),
+			gce_maps_get_shadow (shadow),
+			gce_maps_get_orientation (orientation),
+			NULL, NULL, NULL,
+			"handle");
+
+	node = gce_node_cache_fetch_node (widget, 
+			gce_maps_get_detail (detail),
+			gce_maps_get_state (state),
+			gce_maps_get_shadow (shadow),
+			gce_maps_get_orientation (orientation),
+			NULL, NULL, NULL);
 
 	rectangle (self, node, base, window, area, widget, 
 		   x, y, width, height, TRUE);
@@ -681,20 +654,16 @@
 	GceNode *node;
 	GceNode *base;
 
-	base = gce_node_cache_fetch_node ();
-	base->widget = widget;
-	base->class_name = gce_maps_get_detail (detail);
-	base->pseudo_class = gce_maps_get_state (state);
-	base->edge = gce_maps_get_window_edge (edge);
-	base->flavor = PRIMITIVE;
-	base->impl.primitive = "resizegrip";
-
-	node = gce_node_cache_fetch_node ();
-	node->widget = widget;
-	node->class_name = base->class_name;
-	node->pseudo_class = base->pseudo_class;
-	node->edge = base->edge;
-	node->flavor = UNSET;
+	base = gce_node_cache_fetch_primitive_node (widget,
+			gce_maps_get_detail (detail),
+			gce_maps_get_state (state),
+			NULL, NULL, NULL, gce_maps_get_window_edge (edge), NULL,
+			"resizegrip");
+
+	node = gce_node_cache_fetch_node (widget, 
+			gce_maps_get_detail (detail),
+			gce_maps_get_state (state),
+			NULL, NULL, NULL, gce_maps_get_window_edge (edge), NULL);
 
 	rectangle (self, node, base, window, area, widget, 
 		   x, y, width, height, TRUE);
@@ -718,18 +687,16 @@
 	GceNode *node;
 	GceNode *base;
 
-	base = gce_node_cache_fetch_node ();
-	base->widget = widget;
-	base->class_name = gce_maps_get_detail (detail);
-	base->pseudo_class = gce_maps_get_state (state);
-	base->flavor = PRIMITIVE;
-	base->impl.primitive = "focus";
-
-	node = gce_node_cache_fetch_node ();
-	node->widget = widget;
-	node->class_name = base->class_name;
-	node->pseudo_class = base->pseudo_class;
-	node->flavor = UNSET;
+	base = gce_node_cache_fetch_primitive_node (widget,
+			gce_maps_get_detail (detail),
+			gce_maps_get_state (state),
+			NULL, NULL, NULL, NULL, NULL,
+			"focus");
+
+	node = gce_node_cache_fetch_node (widget, 
+			gce_maps_get_detail (detail),
+			gce_maps_get_state (state),
+			NULL, NULL, NULL, NULL, NULL);
 
 	rectangle (self, node, base, window, area, widget, 
 		   x, y, width, height, FALSE);
@@ -764,21 +731,16 @@
 		expander_size = DEFAULT_EXPANDER_SIZE;
 	}
 
-
-	base = gce_node_cache_fetch_node ();
-	base->widget = widget;
-	base->class_name = gce_maps_get_detail (detail);
-	base->pseudo_class = gce_maps_get_state (state);
-	base->expander_style = gce_maps_get_expander_style (style);
-	base->flavor = PRIMITIVE;
-	base->impl.primitive = "expander";
-
-	node = gce_node_cache_fetch_node ();
-	node->widget = widget;
-	node->class_name = base->class_name;
-	node->pseudo_class = base->pseudo_class;
-	node->expander_style = base->expander_style;
-	node->flavor = UNSET;
+	base = gce_node_cache_fetch_primitive_node (widget,
+			gce_maps_get_detail (detail),
+			gce_maps_get_state (state),
+			NULL, NULL, NULL, NULL, gce_maps_get_expander_style (style),
+			"expander");
+
+	node = gce_node_cache_fetch_node (widget, 
+			gce_maps_get_detail (detail),
+			gce_maps_get_state (state),
+			NULL, NULL, NULL, NULL, gce_maps_get_expander_style (style));
 
 	rectangle (self, node, base, window, area, widget, 
 		   x, y, expander_size, expander_size, TRUE);
@@ -804,20 +766,18 @@
 	GceNode *node;
 	GceNode *base;
 
-	base = gce_node_cache_fetch_node ();
-	base->widget = widget;
-	base->class_name = gce_maps_get_detail (detail);
-	base->pseudo_class = gce_maps_get_state (state);
-	base->shadow = gce_maps_get_shadow (shadow);
-	base->flavor = PRIMITIVE;
-	base->impl.primitive = "diamond";
-
-	node = gce_node_cache_fetch_node ();
-	node->widget = widget;
-	node->class_name = base->class_name;
-	node->pseudo_class = base->pseudo_class;
-	node->shadow = base->shadow;
-	node->flavor = UNSET;
+	base = gce_node_cache_fetch_primitive_node (widget,
+			gce_maps_get_detail (detail),
+			gce_maps_get_state (state),
+			gce_maps_get_shadow (shadow),
+			NULL, NULL, NULL, NULL,
+			"diamond");
+
+	node = gce_node_cache_fetch_node (widget, 
+			gce_maps_get_detail (detail),
+			gce_maps_get_state (state),
+			gce_maps_get_shadow (shadow),
+			NULL, NULL, NULL, NULL);
 
 	rectangle (self, node, base, window, area, widget, 
 		   x, y, width, height, TRUE);
@@ -826,6 +786,9 @@
 	gce_node_cache_release_node (base);
 }
 
+/*
+ * TODO: handle `fill'?
+ */
 static void
 draw_arrow (GtkStyle		*self,
 	    GdkWindow		*window,
@@ -844,22 +807,20 @@
 	GceNode *node;
 	GceNode *base;
 
-	base = gce_node_cache_fetch_node ();
-	base->widget = widget;
-	base->class_name = gce_maps_get_detail (detail);
-	base->pseudo_class = gce_maps_get_state (state);
-	base->shadow = gce_maps_get_shadow (shadow);
-	base->orientation = gce_maps_get_arrow (arrow);
-	base->flavor = PRIMITIVE;
-	base->impl.primitive = "arrow";
-
-	node = gce_node_cache_fetch_node ();
-	node->widget = widget;
-	node->class_name = base->class_name;
-	node->pseudo_class = base->pseudo_class;
-	node->shadow = base->shadow;
-	node->orientation = base->orientation;
-	node->flavor = UNSET;
+	base = gce_node_cache_fetch_primitive_node (widget,
+			gce_maps_get_detail (detail),
+			gce_maps_get_state (state),
+			gce_maps_get_shadow (shadow),
+			gce_maps_get_arrow (arrow),
+			NULL, NULL, NULL,
+			"arrow");
+
+	node = gce_node_cache_fetch_node (widget, 
+			gce_maps_get_detail (detail),
+			gce_maps_get_state (state),
+			gce_maps_get_shadow (shadow),
+			gce_maps_get_arrow (arrow),
+			NULL, NULL, NULL);
 
 	rectangle (self, node, base, window, area, widget, 
 		   x, y, width, height, TRUE);
@@ -877,27 +838,25 @@
 	  GtkWidget		*widget,
 	  char const		*detail,
 	  gint			 x,
-	  gint			y,
-	  gint			width,
-	  gint			height)
+	  gint			 y,
+	  gint			 width,
+	  gint			 height)
 {
 	GceNode *node;
 	GceNode *base;
 
-	base = gce_node_cache_fetch_node ();
-	base->widget = widget;
-	base->class_name = gce_maps_get_detail (detail);
-	base->pseudo_class = gce_maps_get_state (state);
-	base->shadow = gce_maps_get_shadow (shadow);
-	base->flavor = PRIMITIVE;
-	base->impl.primitive = "tab";
-
-	node = gce_node_cache_fetch_node ();
-	node->widget = widget;
-	node->class_name = base->class_name;
-	node->pseudo_class = base->pseudo_class;
-	node->shadow = base->shadow;
-	node->flavor = UNSET;
+	base = gce_node_cache_fetch_primitive_node (widget,
+			gce_maps_get_detail (detail),
+			gce_maps_get_state (state),
+			gce_maps_get_shadow (shadow),
+			NULL, NULL, NULL, NULL,
+			"tab");
+
+	node = gce_node_cache_fetch_node (widget, 
+			gce_maps_get_detail (detail),
+			gce_maps_get_state (state),
+			gce_maps_get_shadow (shadow),
+			NULL, NULL, NULL, NULL);
 
 	rectangle (self, node, base, window, area, widget, 
 		   x, y, width, height, TRUE);



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