[gtk+] TextView: render the background of border windows



commit 715b8744f58fe10b77da03b14422447f2ae61163
Author: Paolo Borelli <pborelli gnome org>
Date:   Sun Jun 15 18:27:52 2014 +0200

    TextView: render the background of border windows
    
    Set the .top, .left, etc css classes and render the background
    of the border windows.
    Change the reftest implementation accordingly.

 gtk/gtktextview.c                             |   37 +++++++++++++++++++
 testsuite/reftests/textview-border-windows.c  |   47 -------------------------
 testsuite/reftests/textview-border-windows.ui |    1 -
 3 files changed, 37 insertions(+), 48 deletions(-)
---
diff --git a/gtk/gtktextview.c b/gtk/gtktextview.c
index 4de4cd7..48c60b8 100644
--- a/gtk/gtktextview.c
+++ b/gtk/gtktextview.c
@@ -5326,6 +5326,38 @@ draw_text (cairo_t  *cr,
   gtk_text_view_paint (widget, cr);
 }
 
+static void
+paint_border_window (GtkTextView       *text_view,
+                     cairo_t           *cr,
+                     GtkTextWindowType  type,
+                     GtkStyleContext   *context,
+                     const char        *class)
+{
+  GdkWindow *window;
+
+  window = gtk_text_view_get_window (text_view, type);
+
+  if (window != NULL &&
+      gtk_cairo_should_draw_window (cr, window))
+    {
+      gint w, h;
+
+      gtk_style_context_save (context);
+      gtk_style_context_add_class (context, class);
+
+      w = gdk_window_get_width (window);
+      h = gdk_window_get_height (window);
+
+      gtk_cairo_transform_to_window (cr, GTK_WIDGET (text_view), window);
+
+      cairo_save (cr);
+      gtk_render_background (context, cr, 0, 0, w, h);
+      cairo_restore (cr);
+
+      gtk_style_context_restore (context);
+    }
+}
+
 static gboolean
 gtk_text_view_draw (GtkWidget *widget,
                     cairo_t   *cr)
@@ -5378,6 +5410,11 @@ gtk_text_view_draw (GtkWidget *widget,
       cairo_restore (cr);
     }
 
+  paint_border_window (GTK_TEXT_VIEW (widget), cr, GTK_TEXT_WINDOW_LEFT, context, GTK_STYLE_CLASS_LEFT);
+  paint_border_window (GTK_TEXT_VIEW (widget), cr, GTK_TEXT_WINDOW_RIGHT, context, GTK_STYLE_CLASS_RIGHT);
+  paint_border_window (GTK_TEXT_VIEW (widget), cr, GTK_TEXT_WINDOW_TOP, context, GTK_STYLE_CLASS_TOP);
+  paint_border_window (GTK_TEXT_VIEW (widget), cr, GTK_TEXT_WINDOW_BOTTOM, context, GTK_STYLE_CLASS_BOTTOM);
+
   /* Propagate exposes to all unanchored children. 
    * Anchored children are handled in gtk_text_view_paint(). 
    */
diff --git a/testsuite/reftests/textview-border-windows.c b/testsuite/reftests/textview-border-windows.c
index 502b18b..019b654 100644
--- a/testsuite/reftests/textview-border-windows.c
+++ b/testsuite/reftests/textview-border-windows.c
@@ -17,53 +17,6 @@
 
 #include <gtk/gtk.h>
 
-static void
-paint_border (GtkTextView       *text_view,
-              cairo_t           *cr,
-              GtkTextWindowType  type,
-              GtkStyleContext   *context,
-              const char        *class)
-{
-  GdkWindow *window;
-
-  window = gtk_text_view_get_window (text_view, type);
-
-  if (window != NULL &&
-      gtk_cairo_should_draw_window (cr, window))
-    {
-      gint w, h;
-
-      gtk_style_context_save (context);
-      gtk_style_context_add_class (context, class);
-
-      w = gdk_window_get_width (window);
-      h = gdk_window_get_height (window);
-
-      gtk_cairo_transform_to_window (cr, GTK_WIDGET (text_view), window);
-
-      cairo_save (cr);
-      gtk_render_background (context, cr, 0, 0, w, h);
-      cairo_restore (cr);
-
-      gtk_style_context_restore (context);
-    }
-}
-
-G_MODULE_EXPORT gboolean
-paint_border_windows (GtkTextView *text_view,
-                      cairo_t     *cr)
-{
-  GtkStyleContext *context;
-
-  context = gtk_widget_get_style_context (GTK_WIDGET (text_view));
-
-  paint_border (text_view, cr, GTK_TEXT_WINDOW_LEFT, context, "left");
-  paint_border (text_view, cr, GTK_TEXT_WINDOW_RIGHT, context, "right");
-  paint_border (text_view, cr, GTK_TEXT_WINDOW_TOP, context, "top");
-  paint_border (text_view, cr, GTK_TEXT_WINDOW_BOTTOM, context, "bottom");
-
-  return FALSE;
-}
 
 G_MODULE_EXPORT void
 add_border_windows (GtkTextView *text_view)
diff --git a/testsuite/reftests/textview-border-windows.ui b/testsuite/reftests/textview-border-windows.ui
index 7aa6b22..5ca2b2e 100644
--- a/testsuite/reftests/textview-border-windows.ui
+++ b/testsuite/reftests/textview-border-windows.ui
@@ -13,7 +13,6 @@
         <property name="can_focus">True</property>
         <property name="wrap_mode">word</property>
         <signal name="map" handler="reftest:add_border_windows" swapped="no"/>
-        <signal name="draw" handler="reftest:paint_border_windows" swapped="no"/>
       </object>
     </child>
   </object>


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