From fd8e0fe0f9c630a56d415604c3c80dce5cd24648 Mon Sep 17 00:00:00 2001 From: Michael Natterer Date: Tue, 15 Jan 2013 14:56:29 +0100 Subject: [PATCH 31/68] Hackish fix for bug 8493 - Min size of GtkScrolledWindow is too small In gtk_scrollbar_size_allocate(), pretend the scrollbar always has scroll arrows so the parent impl makes it a bit larger. --- gtk/gtkscrollbar.c | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/gtk/gtkscrollbar.c b/gtk/gtkscrollbar.c index 634b337..bab062d 100644 --- a/gtk/gtkscrollbar.c +++ b/gtk/gtkscrollbar.c @@ -32,6 +32,8 @@ #include "gtkprivate.h" #include "gtkalias.h" +static void gtk_scrollbar_size_request (GtkWidget *widget, + GtkRequisition *requisition); static void gtk_scrollbar_style_set (GtkWidget *widget, GtkStyle *previous); @@ -42,6 +44,7 @@ gtk_scrollbar_class_init (GtkScrollbarClass *class) { GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (class); + widget_class->size_request = gtk_scrollbar_size_request; widget_class->style_set = gtk_scrollbar_style_set; GTK_RANGE_CLASS (class)->stepper_detail = "Xscrollbar"; @@ -97,6 +100,31 @@ gtk_scrollbar_init (GtkScrollbar *scrollbar) } static void +gtk_scrollbar_size_request (GtkWidget *widget, + GtkRequisition *requisition) +{ + GtkRange *range = GTK_RANGE (widget); + gboolean saved_a, saved_b, saved_c, saved_d; + + saved_a = range->has_stepper_a; + saved_b = range->has_stepper_b; + saved_c = range->has_stepper_c; + saved_d = range->has_stepper_d; + + range->has_stepper_a = TRUE; + range->has_stepper_b = FALSE; + range->has_stepper_c = FALSE; + range->has_stepper_d = TRUE; + + GTK_WIDGET_CLASS (gtk_scrollbar_parent_class)->size_request (widget, requisition); + + range->has_stepper_a = saved_a; + range->has_stepper_b = saved_b; + range->has_stepper_c = saved_c; + range->has_stepper_d = saved_d; +} + +static void gtk_scrollbar_style_set (GtkWidget *widget, GtkStyle *previous) { -- 1.7.10.2 (Apple Git-33)