Commit 1ac13435 authored by Alexander Larsson's avatar Alexander Larsson

GtkTextView: Fix regression in GtkSourceView drawing

GtkSourceView draws before chaining upo to GtkTextView and assumes
that this will be visible, but the pixelcache will just overdraw
that with background.

So, we stop drawing the background to the pixel cache and instead
make it an CAIRO_CONTENT_COLOR_ALPHA surface to make the previously
drawn content see through.

This is slower, but more backwards compatible.

https://bugzilla.gnome.org/show_bug.cgi?id=708423
parent 2d3c470a
......@@ -1477,6 +1477,13 @@ gtk_text_view_init (GtkTextView *text_view)
priv->pixel_cache = _gtk_pixel_cache_new ();
/* Widgets inheriting from GtkTextView (like GtkSourceView) rely on being able to
paint before chaining up to GtkTextView.draw() and having that be visible, that
doesn't work unless we have alpha in the textview pixelcache. This is slightly
suboptimal, as it means drawing the cache is slower (and OVER operation) rather
than a pure blit, but is required for backwards compat. */
_gtk_pixel_cache_set_content (priv->pixel_cache, CAIRO_CONTENT_COLOR_ALPHA);
/* Set up default style */
priv->wrap_mode = GTK_WRAP_NONE;
priv->pixels_above_lines = 0;
......@@ -5252,18 +5259,6 @@ draw_text (cairo_t *cr,
gpointer user_data)
{
GtkWidget *widget = user_data;
GtkStyleContext *context;
GdkRectangle bg_rect;
gdk_cairo_get_clip_rectangle (cr, &bg_rect);
context = gtk_widget_get_style_context (widget);
gtk_style_context_save (context);
gtk_style_context_add_class (context, GTK_STYLE_CLASS_VIEW);
gtk_render_background (context, cr,
bg_rect.x, bg_rect.y,
bg_rect.width, bg_rect.height);
gtk_style_context_restore (context);
gtk_text_view_paint (widget, cr);
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment