forked from AuroraMiddleware/gtk
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
This commit is contained in:
parent
2d3c470aa5
commit
1ac13435b7
@ -1477,6 +1477,13 @@ gtk_text_view_init (GtkTextView *text_view)
|
|||||||
|
|
||||||
priv->pixel_cache = _gtk_pixel_cache_new ();
|
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 */
|
/* Set up default style */
|
||||||
priv->wrap_mode = GTK_WRAP_NONE;
|
priv->wrap_mode = GTK_WRAP_NONE;
|
||||||
priv->pixels_above_lines = 0;
|
priv->pixels_above_lines = 0;
|
||||||
@ -5252,18 +5259,6 @@ draw_text (cairo_t *cr,
|
|||||||
gpointer user_data)
|
gpointer user_data)
|
||||||
{
|
{
|
||||||
GtkWidget *widget = 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);
|
gtk_text_view_paint (widget, cr);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user