summaryrefslogtreecommitdiff
path: root/gtk/gtkscrollbar.c
diff options
context:
space:
mode:
authorHavoc Pennington <hp@pobox.com>2001-06-04 02:31:12 +0000
committerHavoc Pennington <hp@src.gnome.org>2001-06-04 02:31:12 +0000
commit42f429be76e96f1861a17da2cd5ef56741172e25 (patch)
tree3ca33e80692cfb0f73e4621113bce3dbcb0546a9 /gtk/gtkscrollbar.c
parent741c71eb931cb85651e9f5aba99db4017dda180a (diff)
downloadgtk+-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.c98
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);
}
+
+