[gtksourceview/wip/gutter-draw-refactoring: 3/3] gutter: split on_view_draw: apply_style()



commit acf8f92be5510340f705095b7b2054383c38f999
Author: Sébastien Wilmet <swilmet gnome org>
Date:   Sun Nov 23 12:54:43 2014 +0100

    gutter: split on_view_draw: apply_style()

 gtksourceview/gtksourcegutter.c |   75 +++++++++++++++++++++++----------------
 1 files changed, 44 insertions(+), 31 deletions(-)
---
diff --git a/gtksourceview/gtksourcegutter.c b/gtksourceview/gtksourcegutter.c
index 420c29b..22b5b08 100644
--- a/gtksourceview/gtksourcegutter.c
+++ b/gtksourceview/gtksourcegutter.c
@@ -917,6 +917,49 @@ get_clip_rectangle (GtkSourceGutter *gutter,
        return gdk_cairo_get_clip_rectangle (cr, clip);
 }
 
+static void
+apply_style (GtkSourceGutter *gutter,
+            GtkSourceView   *view,
+            GtkStyleContext *style_context,
+            cairo_t         *cr)
+{
+       const gchar *class;
+       GdkRGBA fg_color;
+
+       switch (gutter->priv->window_type)
+       {
+               case GTK_TEXT_WINDOW_TOP:
+                       class = GTK_STYLE_CLASS_TOP;
+                       break;
+
+               case GTK_TEXT_WINDOW_RIGHT:
+                       class = GTK_STYLE_CLASS_RIGHT;
+                       break;
+
+               case GTK_TEXT_WINDOW_BOTTOM:
+                       class = GTK_STYLE_CLASS_BOTTOM;
+                       break;
+
+               case GTK_TEXT_WINDOW_LEFT:
+                       class = GTK_STYLE_CLASS_LEFT;
+                       break;
+
+               default:
+                       g_return_if_reached ();
+       }
+
+       /* Apply classes ourselves, since we are in connect_after and so they
+        * are not set by gtk.
+        */
+       gtk_style_context_add_class (style_context, class);
+
+       gtk_style_context_get_color (style_context,
+                                    gtk_widget_get_state_flags (GTK_WIDGET (view)),
+                                    &fg_color);
+
+       gdk_cairo_set_source_rgba (cr, &fg_color);
+}
+
 static gboolean
 on_view_draw (GtkSourceView   *view,
               cairo_t         *cr,
@@ -944,8 +987,6 @@ on_view_draw (GtkSourceView   *view,
        gboolean has_selection;
        gint idx;
        GtkStyleContext *style_context;
-       const gchar *class;
-       GdkRGBA fg_color;
 
        if (!get_clip_rectangle (gutter, view, cr, &clip))
        {
@@ -1006,36 +1047,8 @@ on_view_draw (GtkSourceView   *view,
        cell_area.y = background_area.y;
 
        style_context = gtk_widget_get_style_context (GTK_WIDGET (view));
-
        gtk_style_context_save (style_context);
-
-       switch (gutter->priv->window_type)
-       {
-               case GTK_TEXT_WINDOW_TOP:
-                       class = GTK_STYLE_CLASS_TOP;
-                       break;
-               case GTK_TEXT_WINDOW_RIGHT:
-                       class = GTK_STYLE_CLASS_RIGHT;
-                       break;
-               case GTK_TEXT_WINDOW_BOTTOM:
-                       class = GTK_STYLE_CLASS_BOTTOM;
-                       break;
-               case GTK_TEXT_WINDOW_LEFT:
-                       class = GTK_STYLE_CLASS_LEFT;
-                       break;
-               default:
-                       g_return_val_if_reached (GDK_EVENT_PROPAGATE);
-       }
-
-       /* Apply classes ourselves, since we are in connect_after and so they
-        * are not set by gtk */
-       gtk_style_context_add_class (style_context, class);
-
-       gtk_style_context_get_color (style_context,
-                                    gtk_widget_get_state_flags (GTK_WIDGET (view)),
-                                    &fg_color);
-
-       gdk_cairo_set_source_rgba (cr, &fg_color);
+       apply_style (gutter, view, style_context, cr);
 
        for (item = gutter->priv->renderers, idx = 0;
             item != NULL;


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