diff options
author | Carlos Garnacho <carlosg@gnome.org> | 2014-11-17 14:47:57 +0100 |
---|---|---|
committer | Carlos Garnacho <carlosg@gnome.org> | 2014-11-17 14:55:05 +0100 |
commit | 6d5f2ff87ebdf9abcbf70c7fb26348fca2a612ae (patch) | |
tree | cdcd3c7a3ee919a1c8a80268e6eb9c267da53ae7 | |
parent | da8fdab87b4cc96b9614ccb6abb0682def324f30 (diff) | |
download | gtk+-6d5f2ff87ebdf9abcbf70c7fb26348fca2a612ae.tar.gz |
scrolledwindow: Only render background/frame on the widget window
Otherwise it is rendered too on each indicator window, possibly bringing
in an unintended opaque background there. Better seen with git show -b.
-rw-r--r-- | gtk/gtkscrolledwindow.c | 71 |
1 files changed, 37 insertions, 34 deletions
diff --git a/gtk/gtkscrolledwindow.c b/gtk/gtkscrolledwindow.c index afaf69f43b..3d33d600b4 100644 --- a/gtk/gtkscrolledwindow.c +++ b/gtk/gtkscrolledwindow.c @@ -1832,47 +1832,50 @@ gtk_scrolled_window_draw (GtkWidget *widget, GtkStyleContext *context; gboolean scrollbars_within_bevel; - context = gtk_widget_get_style_context (widget); - gtk_scrolled_window_relative_allocation (widget, &relative_allocation); + if (gtk_cairo_should_draw_window (cr, gtk_widget_get_window (widget))) + { + context = gtk_widget_get_style_context (widget); + gtk_scrolled_window_relative_allocation (widget, &relative_allocation); - gtk_render_background (context, cr, - 0, 0, - gtk_widget_get_allocated_width (widget), - gtk_widget_get_allocated_height (widget)); + gtk_render_background (context, cr, + 0, 0, + gtk_widget_get_allocated_width (widget), + gtk_widget_get_allocated_height (widget)); - if (priv->hscrollbar_visible && - priv->vscrollbar_visible) - gtk_scrolled_window_draw_scrollbars_junction (scrolled_window, cr); + if (priv->hscrollbar_visible && + priv->vscrollbar_visible) + gtk_scrolled_window_draw_scrollbars_junction (scrolled_window, cr); - gtk_widget_style_get (widget, "scrollbars-within-bevel", &scrollbars_within_bevel, NULL); + gtk_widget_style_get (widget, "scrollbars-within-bevel", &scrollbars_within_bevel, NULL); - if (!scrollbars_within_bevel) - { - GtkStateFlags state; - GtkBorder padding, border; + if (!scrollbars_within_bevel) + { + GtkStateFlags state; + GtkBorder padding, border; - state = gtk_widget_get_state_flags (widget); - gtk_style_context_get_padding (context, state, &padding); - gtk_style_context_get_border (context, state, &border); + state = gtk_widget_get_state_flags (widget); + gtk_style_context_get_padding (context, state, &padding); + gtk_style_context_get_border (context, state, &border); - relative_allocation.x -= padding.left + border.left; - relative_allocation.y -= padding.top + border.top; - relative_allocation.width += padding.left + padding.right + border.left + border.right; - relative_allocation.height += padding.top + padding.bottom + border.top + border.bottom; - } - else - { - relative_allocation.x = 0; - relative_allocation.y = 0; - relative_allocation.width = gtk_widget_get_allocated_width (widget); - relative_allocation.height = gtk_widget_get_allocated_height (widget); - } + relative_allocation.x -= padding.left + border.left; + relative_allocation.y -= padding.top + border.top; + relative_allocation.width += padding.left + padding.right + border.left + border.right; + relative_allocation.height += padding.top + padding.bottom + border.top + border.bottom; + } + else + { + relative_allocation.x = 0; + relative_allocation.y = 0; + relative_allocation.width = gtk_widget_get_allocated_width (widget); + relative_allocation.height = gtk_widget_get_allocated_height (widget); + } - gtk_render_frame (context, cr, - relative_allocation.x, - relative_allocation.y, - relative_allocation.width, - relative_allocation.height); + gtk_render_frame (context, cr, + relative_allocation.x, + relative_allocation.y, + relative_allocation.width, + relative_allocation.height); + } GTK_WIDGET_CLASS (gtk_scrolled_window_parent_class)->draw (widget, cr); |