diff options
author | Havoc Pennington <hp@pobox.com> | 2001-06-04 02:31:12 +0000 |
---|---|---|
committer | Havoc Pennington <hp@src.gnome.org> | 2001-06-04 02:31:12 +0000 |
commit | 42f429be76e96f1861a17da2cd5ef56741172e25 (patch) | |
tree | 3ca33e80692cfb0f73e4621113bce3dbcb0546a9 /gtk/gtkscrollbar.c | |
parent | 741c71eb931cb85651e9f5aba99db4017dda180a (diff) | |
download | gtk+-42f429be76e96f1861a17da2cd5ef56741172e25.tar.gz |
make this special-case hscale/vscale details, so we can use it for
2001-06-03 Havoc Pennington <hp@pobox.com>
* gtk/gtkstyle.c (gtk_default_draw_slider): make this special-case
hscale/vscale details, so we can use it for scrollbar as well.
* tests/testgtk.c (reformat_value): honor digits from GtkScale
* gtk/gtkenums.h (GtkTroughType): Remove this enum
(GtkScrollType): add START and END from GtkTroughType
* gtk/gtkstyle.c (gtk_default_draw_slider): was not properly using
its x/y arguments
* gtk/gtkrange.h, gtk/gtkrange.c, gtk/gtkscrollbar.h,
gtk/gtkscrollbar.c, gtk/gtkscale.h, gtk/gtkscale.c,
gtk/gtkhscrollbar.h, gtk/gtkhscrollbar.c, gtk/gtkvscrollbar.h,
gtk/gtkvscrollbar.c, gtk/gtkhscale.h, gtk/gtkhscale.c,
gtk/gtkvscale.h, gtk/gtkvscale.c: Rewrite GtkRange and subclasses.
Notable changes in the process:
- stepper_size style property is the height for vertical
ranges, width for horizontal; the other dimension matches
the trough size
- add ability to do NeXT-style steppers (and several other styles
that don't make any sense)
- added min_slider_length, fixed_slider_length properties to
GtkScrollbar
- cleaned some private (or at least useless) functions out of
gtkscale.h
- moved bindings to GtkScale from subclasses, even arrow keys,
since blind users don't know scale orientation.
- change move_slider action signal to use new GtkScrollType,
remove GtkTroughType argument
- digits rounds the values a range will input to the given
number of decimals, but will not try to force adjustment
values set by other controllers. That is, we no longer
modify adjustment->value inside a value_changed handler.
- added getters for GtkScale setters
- middle-click begins a slider drag
Diffstat (limited to 'gtk/gtkscrollbar.c')
-rw-r--r-- | gtk/gtkscrollbar.c | 98 |
1 files changed, 98 insertions, 0 deletions
diff --git a/gtk/gtkscrollbar.c b/gtk/gtkscrollbar.c index c62fc13c2e..28e7ff694d 100644 --- a/gtk/gtkscrollbar.c +++ b/gtk/gtkscrollbar.c @@ -1,5 +1,6 @@ /* 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 Lesser General Public @@ -25,9 +26,14 @@ */ #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) @@ -57,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); } + + |