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
This commit is contained in:
Benjamin Berg 2007-06-08 12:32:02 +00:00 committed by Benjamin Berg
parent 3c49e2ef62
commit 8a267fa7c9
2 changed files with 22 additions and 26 deletions

View File

@ -1,3 +1,9 @@
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)
2007-06-08 Matthias Clasen <mclasen@redhat.com> 2007-06-08 Matthias Clasen <mclasen@redhat.com>
Make it possible for theme engines to support symbolic Make it possible for theme engines to support symbolic

View File

@ -958,38 +958,28 @@ gtk_scrolled_window_paint (GtkWidget *widget,
{ {
GtkAllocation relative_allocation; GtkAllocation relative_allocation;
gboolean scrollbars_within_bevel; 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); 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; if (!scrollbars_within_bevel)
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 (GTK_WIDGET_VISIBLE (scrolled_window->hscrollbar)) gtk_scrolled_window_relative_allocation (widget, &relative_allocation);
{
gint dy = scrolled_window->hscrollbar->allocation.height + scrollbar_spacing;
relative_allocation.height += dy;
if (relative_allocation.y) relative_allocation.x -= widget->style->xthickness;
relative_allocation.y -= dy; relative_allocation.y -= widget->style->ythickness;
} relative_allocation.width += 2 * widget->style->xthickness;
relative_allocation.height += 2 * widget->style->ythickness;
if (GTK_WIDGET_VISIBLE (scrolled_window->vscrollbar))
{
gint dx = scrolled_window->vscrollbar->allocation.width + scrollbar_spacing;
relative_allocation.width += dx;
if (relative_allocation.x)
relative_allocation.x -= dx;
}
} }
else
{
GtkContainer *container = GTK_CONTAINER (widget);
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_paint_shadow (widget->style, widget->window,
GTK_STATE_NORMAL, scrolled_window->shadow_type, GTK_STATE_NORMAL, scrolled_window->shadow_type,
area, widget, "scrolled_window", area, widget, "scrolled_window",