[gitg/gtk3: 17/20] Port to GtkStyleContext and GdkRGBA



commit 0e71d021270a829b283eb2a82ec4f892f65ff9cc
Author: Garrett Regier <alias301 gmail com>
Date:   Sun Jan 2 21:38:09 2011 -0800

    Port to GtkStyleContext and GdkRGBA

 gitg/gitg-diff-line-renderer.c |   81 ++++++++++++++++-----------------------
 gitg/gitg-repository-dialog.c  |    9 +++-
 gitg/gitg-stat-view.c          |   39 +++++++++----------
 3 files changed, 58 insertions(+), 71 deletions(-)
---
diff --git a/gitg/gitg-diff-line-renderer.c b/gitg/gitg-diff-line-renderer.c
index 7080fe2..8da7f2b 100644
--- a/gitg/gitg-diff-line-renderer.c
+++ b/gitg/gitg-diff-line-renderer.c
@@ -95,14 +95,14 @@ gitg_diff_line_renderer_get_property (GObject    *object,
 }
 
 static void
-darken_or_lighten (cairo_t        *ctx,
-                   GdkColor const *color)
+darken_or_lighten (cairo_t       *ctx,
+                   GdkRGBA const *color)
 {
 	float r, g, b;
 
-	r = color->red / 65535.0;
-	g = color->green / 65535.0;
-	b = color->blue / 65535.0;
+	r = color->red;
+	g = color->green;
+	b = color->blue;
 
 	if ((r + g + b) / 3 > 0.5)
 	{
@@ -130,9 +130,10 @@ render_label (GitgDiffLineRenderer *lr,
               GtkCellRendererState  flags)
 {
 	PangoLayout *layout;
-	GtkStyle *style;
+	GtkStyleContext *style_context;
 	GtkStateType state;
 	gint pixel_height;
+	GdkRGBA fg_color, bg_color;
 
 	layout = gtk_widget_create_pango_layout (widget, "");
 
@@ -143,12 +144,13 @@ render_label (GitgDiffLineRenderer *lr,
 
 	pango_layout_set_alignment (layout, PANGO_ALIGN_CENTER);
 
-	style = gtk_widget_get_style (widget);
+	style_context = gtk_widget_get_style_context (widget);
 	state = gtk_widget_get_state (widget);
 
+	gtk_style_context_get_color (style_context, state, &fg_color);
+	gtk_style_context_get_background_color (style_context, state, &bg_color);
 
-
-	gdk_cairo_set_source_color (ctx, &(style->fg[state]));
+	gdk_cairo_set_source_rgba (ctx, &fg_color);
 
 	gitg_utils_rounded_rectangle (ctx,
 	                              cell_area->x + 0.5,
@@ -159,12 +161,12 @@ render_label (GitgDiffLineRenderer *lr,
 
 	cairo_fill_preserve (ctx);
 
-	darken_or_lighten (ctx, &(style->fg[state]));
+	darken_or_lighten (ctx, &fg_color);
 
 	cairo_set_line_width (ctx, 1);
 	cairo_stroke (ctx);
 
-	gdk_cairo_set_source_color (ctx, &(style->base[state]));
+	gdk_cairo_set_source_rgba (ctx, &bg_color);
 
 	cairo_move_to (ctx,
 	               cell_area->x + cell_area->width / 2,
@@ -172,13 +174,8 @@ render_label (GitgDiffLineRenderer *lr,
 
 	pango_cairo_show_layout (ctx, layout);
 
-	/*gtk_draw_layout (style,
+	/*gtk_render_layout (style_context,
 	                   ctx,
-	                   state,
-	                   FALSE,
-	                   NULL,
-	                   widget,
-	                   NULL,
 	                   cell_area->x + cell_area->width / 2,
 	                   cell_area->y,
 	                   layout);*/
@@ -198,7 +195,8 @@ render_lines (GitgDiffLineRenderer *lr,
 	gchar new_str[16];
 	guint xpad;
 	guint ypad;
-	GtkStyle *style;
+	GtkWidget *widget;
+	GtkStyleContext *style_context;
 
 	PangoLayout *layout = gtk_widget_create_pango_layout (widget, "");
 	pango_layout_set_width (layout, cell_area->width / 2);
@@ -226,42 +224,29 @@ render_lines (GitgDiffLineRenderer *lr,
 	g_object_get (lr, "xpad", &xpad, "ypad", &ypad, NULL);
 
 	pango_layout_set_text (layout, old_str, -1);
-	style = gtk_widget_get_style (widget);
+	style_context = gtk_widget_get_style_context (widget);
 
-	gtk_draw_layout (style,
-	                 ctx,
-	                 gtk_widget_get_state (widget),
-	                 FALSE,
-	                 NULL,
-	                 widget,
-	                 NULL,
-	                 cell_area->x + cell_area->width / 2 - 1 - xpad,
-	                 cell_area->y,
-	                 layout);
+	gtk_render_layout (style_context,
+	                   ctx,
+	                   cell_area->x + cell_area->width / 2 - 1 - xpad,
+	                   cell_area->y,
+	                   layout);
 
 	pango_layout_set_text (layout, new_str, -1);
-	gtk_draw_layout (style,
-	                 ctx,
-	                 gtk_widget_get_state (widget),
-	                 FALSE,
-	                 NULL,
-	                 widget,
-	                 NULL,
-	                 cell_area->x + cell_area->width - xpad,
-	                 cell_area->y,
-	                 layout);
+	gtk_render_layout (style_context,
+	                   ctx,
+	                   cell_area->x + cell_area->width - xpad,
+	                   cell_area->y,
+	                   layout);
 
 	g_object_unref (layout);
 
-	gtk_draw_vline (style,
-	                ctx,
-	                gtk_widget_get_state (widget),
-	                NULL,
-	                widget,
-	                NULL,
-	                background_area->y,
-	                background_area->y + background_area->height,
-	                background_area->x + background_area->width / 2);
+	gtk_render_line (style_context,
+	                 ctx,
+	                 background_area->x + background_area->width / 2,
+	                 background_area->y,
+	                 background_area->y + background_area->height,
+	                 background_area->x + background_area->width / 2);
 }
 
 static void
diff --git a/gitg/gitg-repository-dialog.c b/gitg/gitg-repository-dialog.c
index 0c4652c..1192119 100644
--- a/gitg/gitg-repository-dialog.c
+++ b/gitg/gitg-repository-dialog.c
@@ -304,6 +304,9 @@ on_fetch_begin_loading (GitgShell *shell, FetchInfo *info)
 {
 	GtkTreeIter iter;
 	GtkTreePath *path = gtk_tree_row_reference_get_path (info->reference);
+	GtkStyleContext *style_context;
+	GValue cycle_duration = {0,};
+	GValue num_steps = {0,};
 
 	gtk_tree_model_get_iter (GTK_TREE_MODEL (info->dialog->priv->list_store_remotes),
 	                         &iter,
@@ -317,8 +320,10 @@ on_fetch_begin_loading (GitgShell *shell, FetchInfo *info)
 	g_value_init (&cycle_duration, G_TYPE_UINT);
 	g_value_init (&num_steps, G_TYPE_UINT);
 
-	gtk_style_get_style_property (style, GTK_TYPE_SPINNER, "num-steps", &num_steps);
-	gtk_style_get_style_property (style, GTK_TYPE_SPINNER, "cycle-duration", &cycle_duration);
+	style_context = gtk_widget_get_style_context (GTK_WIDGET (info->dialog->priv->tree_view_remotes));
+
+	gtk_style_context_get_style_property (style_context, "num-steps", &num_steps);
+	gtk_style_context_get_style_property (style_context, "cycle-duration", &cycle_duration);
 
 	info->pulse_id = g_timeout_add (g_value_get_uint (&cycle_duration) /
 	                                g_value_get_uint (&num_steps),
diff --git a/gitg/gitg-stat-view.c b/gitg/gitg-stat-view.c
index d0b8662..d22573d 100644
--- a/gitg/gitg-stat-view.c
+++ b/gitg/gitg-stat-view.c
@@ -63,9 +63,9 @@ gitg_stat_view_finalize (GObject *object)
 static void
 update_colors (GitgStatView *view)
 {
-	GtkStyle *style;
-	GdkColor bg_color;
-	gdouble r, g, b;
+	GtkStyleContext *style_context;
+	GtkStateFlags state;
+	GdkRGBA bg_color;
 	gdouble hue, sat, val;
 
 	if (!gtk_widget_get_realized (GTK_WIDGET (view)))
@@ -73,14 +73,11 @@ update_colors (GitgStatView *view)
 		return;
 	}
 
-	style = gtk_widget_get_style (GTK_WIDGET (view));
-	bg_color = style->base[gtk_widget_get_state (GTK_WIDGET (view))];
+	style_context = gtk_widget_get_style_context (GTK_WIDGET (view));
+	state = gtk_widget_get_state (GTK_WIDGET (view));
+	gtk_style_context_get_background_color (style_context, state, &bg_color);
 
-	r = bg_color.red / 65535.0;
-	g = bg_color.green / 65535.0;
-	b = bg_color.blue / 65535.0;
-
-	gtk_rgb_to_hsv (r, g, b, &hue, &sat, &val);
+	gtk_rgb_to_hsv (bg_color.red, bg_color.green, bg_color.blue, &hue, &sat, &val);
 
 	sat = MIN(sat * 0.5 + 0.5, 1);
 	val = MIN((pow(val + 1, 3) - 1) / 7 * 0.6 + 0.2, 1);
@@ -116,21 +113,21 @@ gitg_stat_view_realize (GtkWidget *widget)
 static void
 update_styles (GitgStatView *view)
 {
-	gtk_style_get (gtk_widget_get_style (GTK_WIDGET (view)),
-	               GITG_TYPE_STAT_VIEW,
-	               "radius", &view->priv->radius,
-	               "stat-padding", &view->priv->stat_padding,
-	               "show-lines", &view->priv->show_lines,
-	               "lines-spacing", &view->priv->lines_spacing,
-	               NULL);
+	gtk_style_context_get_style (gtk_widget_get_style_context (GTK_WIDGET (view)),
+	                             gtk_widget_get_state (GTK_WIDGET (view)),
+	                             "radius", &view->priv->radius,
+	                             "stat-padding", &view->priv->stat_padding,
+	                             "show-lines", &view->priv->show_lines,
+	                             "lines-spacing", &view->priv->lines_spacing,
+	                             NULL);
 }
 
 static void
-gitg_stat_view_style_set (GtkWidget *widget, GtkStyle *prev_style)
+gitg_stat_view_style_updated (GtkWidget *widget)
 {
-	if (GTK_WIDGET_CLASS (gitg_stat_view_parent_class)->style_set)
+	if (GTK_WIDGET_CLASS (gitg_stat_view_parent_class)->style_updated)
 	{
-		GTK_WIDGET_CLASS (gitg_stat_view_parent_class)->style_set (widget, prev_style);
+		GTK_WIDGET_CLASS (gitg_stat_view_parent_class)->style_updated (widget);
 	}
 
 	update_colors (GITG_STAT_VIEW (widget));
@@ -405,8 +402,8 @@ gitg_stat_view_class_init (GitgStatViewClass *klass)
 	GObjectClass *object_class = G_OBJECT_CLASS (klass);
 	GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
 
-	widget_class->style_set = gitg_stat_view_style_set;
 	widget_class->draw = gitg_stat_view_draw;
+	widget_class->style_updated = gitg_stat_view_style_updated;
 	widget_class->realize = gitg_stat_view_realize;
 	widget_class->configure_event = gitg_stat_view_configure;
 



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