[maemo-commits] [maemo-commits] r9479 - in projects/haf/trunk/sapwood: . src

From: subversion at stage.maemo.org subversion at stage.maemo.org
Date: Wed Jan 31 12:07:29 EET 2007
Author: tko
Date: 2007-01-31 12:07:25 +0200 (Wed, 31 Jan 2007)
New Revision: 9479

Modified:
   projects/haf/trunk/sapwood/ChangeLog
   projects/haf/trunk/sapwood/src/sapwood-draw.c
Log:
Handle painting GtkExpander and treeview row expanders

2007-01-31  Tommi Komulainen  <tommi.komulainen at nokia.com>

	* src/sapwood-draw.c (draw_expander): Added to handle painting
	GtkExpander and treeview row expanders. Reuses arrow theming rules for
	simplicity.


Modified: projects/haf/trunk/sapwood/ChangeLog
===================================================================
--- projects/haf/trunk/sapwood/ChangeLog	2007-01-31 10:07:14 UTC (rev 9478)
+++ projects/haf/trunk/sapwood/ChangeLog	2007-01-31 10:07:25 UTC (rev 9479)
@@ -1,3 +1,9 @@
+2007-01-31  Tommi Komulainen  <tommi.komulainen at nokia.com>
+
+	* src/sapwood-draw.c (draw_expander): Added to handle painting
+	GtkExpander and treeview row expanders. Reuses arrow theming rules for
+	simplicity.
+
 2007-01-29  Tommi Komulainen  <tommi.komulainen at nokia.com>
 	
 	* === Release 2.91.1 ===

Modified: projects/haf/trunk/sapwood/src/sapwood-draw.c
===================================================================
--- projects/haf/trunk/sapwood/src/sapwood-draw.c	2007-01-31 10:07:14 UTC (rev 9478)
+++ projects/haf/trunk/sapwood/src/sapwood-draw.c	2007-01-31 10:07:25 UTC (rev 9479)
@@ -991,6 +991,55 @@
 }
 
 static void
+draw_expander (GtkStyle        *style,
+               GdkWindow       *window,
+               GtkStateType     state,
+               GdkRectangle    *area,
+               GtkWidget       *widget,
+               const gchar     *detail,
+               gint             center_x,
+               gint             center_y,
+               GtkExpanderStyle expander_style)
+{
+  ThemeMatchData match_data;
+  gint expander_size;
+
+  g_return_if_fail(style != NULL);
+  g_return_if_fail(window != NULL);
+
+  /* Reusing the arrow theming here as it's flexible enough (almost, we do lose
+   * the intermediate states.) It also allows us to use existing gtkrc.
+   * XXX Might want to introduce proper keywords for expanders some day.
+   */
+
+  gtk_widget_style_get (widget, "expander-size", &expander_size, NULL);
+
+  match_data.function = TOKEN_D_ARROW;
+  match_data.detail = (gchar *)detail;
+  match_data.flags = THEME_MATCH_STATE | THEME_MATCH_ARROW_DIRECTION;
+  match_data.state = state;
+
+  switch (expander_style)
+    {
+    case GTK_EXPANDER_COLLAPSED:
+    case GTK_EXPANDER_SEMI_COLLAPSED:
+      match_data.arrow_direction = GTK_ARROW_RIGHT;
+      break;
+    case GTK_EXPANDER_EXPANDED:
+    case GTK_EXPANDER_SEMI_EXPANDED:
+      match_data.arrow_direction = GTK_ARROW_DOWN;
+      break;
+    default:
+      g_return_if_reached ();
+    }
+
+  if (!draw_simple_image (style, window, area, widget, &match_data, TRUE,
+                          center_x - expander_size/2, center_y - expander_size/2, expander_size, expander_size))
+    parent_class->draw_expander (style, window, state, area, widget, detail,
+                                 center_x, center_y, expander_style);
+}
+
+static void
 draw_extension (GtkStyle       *style,
 		GdkWindow      *window,
 		GtkStateType    state,
@@ -1242,4 +1291,5 @@
   style_class->draw_slider = draw_slider;
   style_class->draw_handle = draw_handle;
   style_class->render_icon = render_icon;
+  style_class->draw_expander = draw_expander;
 }


More information about the maemo-commits mailing list