X-Git-Url: http://pileus.org/git/?a=blobdiff_plain;f=gtk%2Fgtkscrollbar.c;h=28e7ff694dae52d3383cdb65d2c24911a16f7d99;hb=6adcae811bea38163c01371c409942b1ba215cf3;hp=68db4d988ae098b5193693f4ee2beab7cfabee98;hpb=060978e069b3c1726c7a1fb3916c3e8c8348a813;p=~andy%2Fgtk diff --git a/gtk/gtkscrollbar.c b/gtk/gtkscrollbar.c index 68db4d988..28e7ff694 100644 --- a/gtk/gtkscrollbar.c +++ b/gtk/gtkscrollbar.c @@ -1,25 +1,39 @@ /* GTK - The GIMP Toolkit * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald + * Copyright (C) 2001 Red Hat, Inc. * * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public + * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Library General Public License for more details. + * Lesser General Public License for more details. * - * You should have received a copy of the GNU Library General Public + * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ + +/* + * Modified by the GTK+ Team and others 1997-2000. See the AUTHORS + * file for a list of people on the GTK+ Team. See the ChangeLog + * files for a list of changes. These files are distributed with + * GTK+ at ftp://ftp.gtk.org/pub/gtk/. + */ + #include "gtkscrollbar.h" +#include "gtkintl.h" static void gtk_scrollbar_class_init (GtkScrollbarClass *klass); static void gtk_scrollbar_init (GtkScrollbar *scrollbar); +static void gtk_scrollbar_style_set (GtkWidget *widget, + GtkStyle *previous); + +static gpointer parent_class; GtkType gtk_scrollbar_get_type (void) @@ -49,9 +63,101 @@ gtk_scrollbar_get_type (void) static void gtk_scrollbar_class_init (GtkScrollbarClass *class) { + GtkWidgetClass *widget_class; + + widget_class = GTK_WIDGET_CLASS (class); + + parent_class = g_type_class_peek_parent (class); + + widget_class->style_set = gtk_scrollbar_style_set; + + gtk_widget_class_install_style_property (widget_class, + g_param_spec_int ("min_slider_length", + _("Minimum Slider Length"), + _("Minimum length of scrollbar slider"), + 0, + G_MAXINT, + 7, + G_PARAM_READABLE)); + + gtk_widget_class_install_style_property (widget_class, + g_param_spec_boolean ("fixed_slider_length", + _("Fixed slider size"), + _("Don't change slider size, just lock it to the minimum length"), + FALSE, + + G_PARAM_READABLE)); + + gtk_widget_class_install_style_property (widget_class, + g_param_spec_boolean ("has_backward_stepper", + _("Backward stepper"), + _("Display the standard backward arrow button"), + TRUE, + + G_PARAM_READABLE)); + + gtk_widget_class_install_style_property (widget_class, + g_param_spec_boolean ("has_forward_stepper", + _("Forward stepper"), + _("Display the standard forward arrow button"), + TRUE, + + G_PARAM_READABLE)); + + gtk_widget_class_install_style_property (widget_class, + g_param_spec_boolean ("has_secondary_backward_stepper", + _("Secondary backward stepper"), + _("Display a second backward arrow button on the opposite end of the scrollbar"), + FALSE, + + G_PARAM_READABLE)); + + gtk_widget_class_install_style_property (widget_class, + g_param_spec_boolean ("has_secondary_forward_stepper", + _("Secondary forward stepper"), + _("Display a secondary forward arrow button on the opposite end of the scrollbar"), + FALSE, + + G_PARAM_READABLE)); } static void gtk_scrollbar_init (GtkScrollbar *scrollbar) { + GtkRange *range; + + range = GTK_RANGE (scrollbar); } + +static void +gtk_scrollbar_style_set (GtkWidget *widget, + GtkStyle *previous) +{ + gint slider_length; + gboolean fixed_size; + gboolean has_a, has_b, has_c, has_d; + GtkRange *range; + + range = GTK_RANGE (widget); + + gtk_widget_style_get (widget, + "min_slider_length", &slider_length, + "fixed_slider_length", &fixed_size, + "has_backward_stepper", &has_a, + "has_secondary_forward_stepper", &has_b, + "has_secondary_backward_stepper", &has_c, + "has_forward_stepper", &has_d, + NULL); + + range->min_slider_size = slider_length; + range->slider_size_fixed = fixed_size; + + range->has_stepper_a = has_a; + range->has_stepper_b = has_b; + range->has_stepper_c = has_c; + range->has_stepper_d = has_d; + + (* GTK_WIDGET_CLASS (parent_class)->style_set) (widget, previous); +} + +