summaryrefslogtreecommitdiff
path: root/gtk/gtkscrolledwindow.c
diff options
context:
space:
mode:
authorBenjamin Berg <benjamin@sipsolutions.net>2007-06-08 12:32:02 +0000
committerBenjamin Berg <bberg@src.gnome.org>2007-06-08 12:32:02 +0000
commit8a267fa7c9da6d6819193a110271aa170f9fdb07 (patch)
treeef33c9f984624b3497ee0f44c730ed7b601f6986 /gtk/gtkscrolledwindow.c
parent3c49e2ef629a51f43287e0763fd2a43d14ea126e (diff)
downloadgtk+-8a267fa7c9da6d6819193a110271aa170f9fdb07.tar.gz
Fix shadow painting if the scrollbars-within-bevel style property is set
2007-06-08 Benjamin Berg <benjamin@sipsolutions.net> * gtk/gtkscrolledwindow.c: (gtk_scrolled_window_paint): Fix shadow painting if the scrollbars-within-bevel style property is set and border_width is nozero. (#445054) svn path=/trunk/; revision=18082
Diffstat (limited to 'gtk/gtkscrolledwindow.c')
-rw-r--r--gtk/gtkscrolledwindow.c40
1 files changed, 15 insertions, 25 deletions
diff --git a/gtk/gtkscrolledwindow.c b/gtk/gtkscrolledwindow.c
index 584a2bd99d..a82bf38650 100644
--- a/gtk/gtkscrolledwindow.c
+++ b/gtk/gtkscrolledwindow.c
@@ -958,38 +958,28 @@ gtk_scrolled_window_paint (GtkWidget *widget,
{
GtkAllocation relative_allocation;
gboolean scrollbars_within_bevel;
- gint scrollbar_spacing;
- gtk_scrolled_window_relative_allocation (widget, &relative_allocation);
gtk_widget_style_get (widget, "scrollbars-within-bevel", &scrollbars_within_bevel, NULL);
- scrollbar_spacing = _gtk_scrolled_window_get_scrollbar_spacing (scrolled_window);
- relative_allocation.x -= widget->style->xthickness;
- relative_allocation.y -= widget->style->ythickness;
- relative_allocation.width += 2 * widget->style->xthickness;
- relative_allocation.height += 2 * widget->style->ythickness;
-
- if (scrollbars_within_bevel)
+ if (!scrollbars_within_bevel)
{
- if (GTK_WIDGET_VISIBLE (scrolled_window->hscrollbar))
- {
- gint dy = scrolled_window->hscrollbar->allocation.height + scrollbar_spacing;
- relative_allocation.height += dy;
+ gtk_scrolled_window_relative_allocation (widget, &relative_allocation);
- if (relative_allocation.y)
- relative_allocation.y -= dy;
- }
-
- if (GTK_WIDGET_VISIBLE (scrolled_window->vscrollbar))
- {
- gint dx = scrolled_window->vscrollbar->allocation.width + scrollbar_spacing;
- relative_allocation.width += dx;
+ relative_allocation.x -= widget->style->xthickness;
+ relative_allocation.y -= widget->style->ythickness;
+ relative_allocation.width += 2 * widget->style->xthickness;
+ relative_allocation.height += 2 * widget->style->ythickness;
+ }
+ else
+ {
+ GtkContainer *container = GTK_CONTAINER (widget);
- if (relative_allocation.x)
- relative_allocation.x -= dx;
- }
+ relative_allocation.x = container->border_width;
+ relative_allocation.y = container->border_width;
+ relative_allocation.width = widget->allocation.width - 2 * container->border_width;
+ relative_allocation.height = widget->allocation.height - 2 * container->border_width;
}
-
+
gtk_paint_shadow (widget->style, widget->window,
GTK_STATE_NORMAL, scrolled_window->shadow_type,
area, widget, "scrolled_window",