diff options
author | Paolo Borelli <pborelli@gnome.org> | 2014-06-15 18:27:52 +0200 |
---|---|---|
committer | Paolo Borelli <pborelli@gnome.org> | 2014-06-15 18:57:06 +0200 |
commit | 715b8744f58fe10b77da03b14422447f2ae61163 (patch) | |
tree | cc4552730334289f711cb68674c19cc8072f69f9 | |
parent | 2eeff1eed6bd0bebcf8f1ade535317147a0e9ca9 (diff) | |
download | gtk+-715b8744f58fe10b77da03b14422447f2ae61163.tar.gz |
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.
-rw-r--r-- | gtk/gtktextview.c | 37 | ||||
-rw-r--r-- | testsuite/reftests/textview-border-windows.c | 47 | ||||
-rw-r--r-- | 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 4de4cd7cfa..48c60b8fde 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 502b18b06d..019b654907 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 7aa6b22fc6..5ca2b2e078 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> |