[gtk-theme-engine-clearlooks] Handle treeview column headers in the Adwaita engine
- From: Carlos Garnacho <carlosg src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk-theme-engine-clearlooks] Handle treeview column headers in the Adwaita engine
- Date: Wed, 19 Jan 2011 03:47:50 +0000 (UTC)
commit f3c61945e2244cad9d7aae07f78f0cf82093f210
Author: Carlos Garnacho <carlosg gnome org>
Date: Wed Jan 19 04:24:11 2011 +0100
Handle treeview column headers in the Adwaita engine
src/adwaita_engine.c | 64 +++++++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 63 insertions(+), 1 deletions(-)
---
diff --git a/src/adwaita_engine.c b/src/adwaita_engine.c
index b3ae31d..9d5fc62 100644
--- a/src/adwaita_engine.c
+++ b/src/adwaita_engine.c
@@ -376,7 +376,68 @@ adwaita_engine_render_extension (GtkThemingEngine *engine,
}
static void
-adwaita_engine_class_init (AdwaitaEngineClass * klass)
+adwaita_engine_render_frame (GtkThemingEngine *engine,
+ cairo_t *cr,
+ gdouble x,
+ gdouble y,
+ gdouble width,
+ gdouble height)
+{
+ const GtkWidgetPath *path;
+ GtkRegionFlags flags = 0;
+ gint len;
+
+ path = gtk_theming_engine_get_path (engine);
+ len = gtk_widget_path_length (path);
+ cairo_save (cr);
+
+#if 0
+ /* FIXME: Replace by this other check when
+ * the treeview exposes all style info
+ */
+ if (gtk_widget_path_iter_has_region (path, len - 2,
+ GTK_STYLE_REGION_COLUMN_HEADER,
+ &flags))
+#endif
+ if (gtk_widget_path_is_type (path, GTK_TYPE_BUTTON) &&
+ gtk_widget_path_has_parent (path, GTK_TYPE_TREE_VIEW))
+ {
+ GtkStateFlags state;
+ GdkRGBA color;
+
+ if ((flags & GTK_REGION_LAST) != 0)
+ return;
+
+ /* Column header */
+ if (gtk_theming_engine_get_direction (engine) == GTK_TEXT_DIR_RTL)
+ {
+ cairo_move_to (cr, x + 0.5, y + 2);
+ cairo_line_to (cr, x + 0.5, y + height - 4);
+ }
+ else
+ {
+ cairo_move_to (cr, x + width - 0.5, y + 2);
+ cairo_line_to (cr, x + width - 0.5, y + height - 4);
+ }
+
+ state = gtk_theming_engine_get_state (engine);
+ gtk_theming_engine_get_border_color (engine, state, &color);
+
+ cairo_set_line_width (cr, 1);
+ gdk_cairo_set_source_rgba (cr, &color);
+ cairo_stroke (cr);
+ }
+ else
+ {
+ GTK_THEMING_ENGINE_CLASS (adwaita_engine_parent_class)->render_frame (engine, cr, x, y,
+ width, height);
+ }
+
+ cairo_restore (cr);
+}
+
+static void
+adwaita_engine_class_init (AdwaitaEngineClass *klass)
{
GtkThemingEngineClass *engine_class = GTK_THEMING_ENGINE_CLASS (klass);
@@ -385,6 +446,7 @@ adwaita_engine_class_init (AdwaitaEngineClass * klass)
engine_class->render_check = adwaita_engine_render_check;
engine_class->render_option = adwaita_engine_render_option;
engine_class->render_extension = adwaita_engine_render_extension;
+ engine_class->render_frame = adwaita_engine_render_frame;
gtk_theming_engine_register_property (ADWAITA_NAMESPACE, NULL,
g_param_spec_boxed ("focus-border-color",
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]