summaryrefslogtreecommitdiff
path: root/gtk/gtkrange.c
diff options
context:
space:
mode:
authorOwen Taylor <otaylor@redhat.com>2001-04-02 15:51:28 +0000
committerOwen Taylor <otaylor@src.gnome.org>2001-04-02 15:51:28 +0000
commitc944151a3cecd2ab199d1645e22d74fe9a66df0a (patch)
treee5719998626f9ff28d2fce5c88ff2de3c5d7bb43 /gtk/gtkrange.c
parent5d1ee0929e0c4fb6cdbfa7a4bf28e2071da9a220 (diff)
downloadgdk-pixbuf-c944151a3cecd2ab199d1645e22d74fe9a66df0a.tar.gz
Fix G_VALUE_NO_COPY_CONTENTS instead of G_SIGNAL_TYPE_STATIC_SCOPE
Mon Apr 2 10:47:57 2001 Owen Taylor <otaylor@redhat.com> * gtk/gtkwidget.c (gtk_widget_class_init): Fix G_VALUE_NO_COPY_CONTENTS instead of G_SIGNAL_TYPE_STATIC_SCOPE stupidity. Mon Apr 2 00:51:11 2001 Owen Taylor <otaylor@redhat.com> [ First pass at adding style properties. Still needs some definite fine-tuning. ] * gtk/gtkbutton.c: Add ::default_spacing style property. * gtk/gtkcheckbutton.[ch] gtkradiobutton.c: Add ::indicator_size, ::indicator_spacing style properties. * gtk/gtkoptionmenu.c: Add ::indicator_size, ::indicator_spacing style properties. * gtk/gtk{,h,v}paned.[ch]: Make handle_size a style property rather than a normal property. * gtk/gtkwidget.c: Add an ::interior_focus style property to draw focus inside buttons, in the Windows/Java Metal/etc. style. * gtk/gtkbutton.c gtk/gtkcheckbutton.c gtk/gtktogglenbutton.c: Honor ::interior_focus. * gtk/gtkentry.c: Don't draw focus at all when ::interior_focus is TRUE. * gtk/gtkrange.[ch] gtk/gtk{h,v}scrollbar.c gtk/gtk{h,v}scale.c: Add ::slider_width, ::trough_border, ::stepper_size, ::stepper_spacing style properties. * gtk/gtkscale.[ch] Add ::slider-length style property.
Diffstat (limited to 'gtk/gtkrange.c')
-rw-r--r--gtk/gtkrange.c117
1 files changed, 93 insertions, 24 deletions
diff --git a/gtk/gtkrange.c b/gtk/gtkrange.c
index 7dfa8d05c..e47118602 100644
--- a/gtk/gtkrange.c
+++ b/gtk/gtkrange.c
@@ -25,6 +25,7 @@
*/
#include <stdio.h>
+#include "gtkintl.h"
#include "gtkmain.h"
#include "gtkrange.h"
#include "gtksignal.h"
@@ -150,9 +151,6 @@ gtk_range_class_init (GtkRangeClass *class)
widget_class->leave_notify_event = gtk_range_leave_notify;
widget_class->style_set = gtk_range_style_set;
- class->slider_width = 11;
- class->stepper_size = 11;
- class->stepper_slider_spacing = 1;
class->min_slider_size = 7;
class->trough = 1;
class->slider = 2;
@@ -176,7 +174,40 @@ gtk_range_class_init (GtkRangeClass *class)
_("How the range should be updated on the screen"),
GTK_TYPE_UPDATE_TYPE,
GTK_UPDATE_CONTINUOUS,
- G_PARAM_READWRITE));
+ G_PARAM_READWRITE));
+
+ gtk_widget_class_install_style_property (widget_class,
+ g_param_spec_int ("slider_width",
+ _("Slider Width"),
+ _("Width of scrollbar or scale thumb"),
+ 0,
+ G_MAXINT,
+ 11,
+ G_PARAM_READABLE));
+ gtk_widget_class_install_style_property (widget_class,
+ g_param_spec_int ("trough_border",
+ _("Trough Border"),
+ _("Width of border around range"),
+ 0,
+ G_MAXINT,
+ 2,
+ G_PARAM_READABLE));
+ gtk_widget_class_install_style_property (widget_class,
+ g_param_spec_int ("stepper_size",
+ _("Stepper Size"),
+ _("Size of step buttons at ends"),
+ 0,
+ G_MAXINT,
+ 11,
+ G_PARAM_READABLE));
+ gtk_widget_class_install_style_property (widget_class,
+ g_param_spec_int ("stepper_spacing",
+ _("Stepper Spacing"),
+ _("Spacing between step buttons and thumb"),
+ G_MININT,
+ G_MAXINT,
+ 1,
+ G_PARAM_READABLE));
}
static void
@@ -471,10 +502,13 @@ _gtk_range_default_hslider_update (GtkRange *range)
gint left;
gint right;
gint x;
+ gint trough_border;
g_return_if_fail (range != NULL);
g_return_if_fail (GTK_IS_RANGE (range));
+ _gtk_range_get_props (range, NULL, &trough_border, NULL, NULL);
+
if (GTK_WIDGET_REALIZED (range))
{
gtk_range_trough_hdims (range, &left, &right);
@@ -503,7 +537,7 @@ _gtk_range_default_hslider_update (GtkRange *range)
if (should_invert (range, TRUE))
x = right - (x - left);
- move_and_update_window (range->slider, x, GTK_WIDGET (range)->style->ythickness);
+ move_and_update_window (range->slider, x, trough_border);
}
}
@@ -513,10 +547,13 @@ _gtk_range_default_vslider_update (GtkRange *range)
gint top;
gint bottom;
gint y;
+ gint trough_border;
g_return_if_fail (range != NULL);
g_return_if_fail (GTK_IS_RANGE (range));
+ _gtk_range_get_props (range, NULL, &trough_border, NULL, NULL);
+
if (GTK_WIDGET_REALIZED (range))
{
gtk_range_trough_vdims (range, &top, &bottom);
@@ -545,7 +582,7 @@ _gtk_range_default_vslider_update (GtkRange *range)
if (should_invert (range, FALSE))
y = bottom - (y - top);
- move_and_update_window (range->slider, GTK_WIDGET (range)->style->xthickness, y);
+ move_and_update_window (range->slider, trough_border, y);
}
}
@@ -555,7 +592,7 @@ _gtk_range_default_htrough_click (GtkRange *range,
gint y,
gdouble *jump_perc)
{
- gint ythickness;
+ gint trough_border;
gint trough_width;
gint trough_height;
gint slider_x;
@@ -565,7 +602,7 @@ _gtk_range_default_htrough_click (GtkRange *range,
g_return_val_if_fail (range != NULL, GTK_TROUGH_NONE);
g_return_val_if_fail (GTK_IS_RANGE (range), GTK_TROUGH_NONE);
- ythickness = GTK_WIDGET (range)->style->ythickness;
+ _gtk_range_get_props (range, NULL, &trough_border, NULL, NULL);
gtk_range_trough_hdims (range, &left, &right);
gdk_window_get_size (range->slider, &slider_length, NULL);
@@ -574,11 +611,11 @@ _gtk_range_default_htrough_click (GtkRange *range,
if (should_invert (range, TRUE))
x = (right - x) + left;
- if ((x > left) && (y > ythickness))
+ if ((x > left) && (y > trough_border))
{
gdk_window_get_size (range->trough, &trough_width, &trough_height);
-
- if ((x < right) && (y < (trough_height - ythickness)))
+
+ if ((x < right) && (y < (trough_height - trough_border)))
{
if (jump_perc)
{
@@ -604,7 +641,7 @@ _gtk_range_default_vtrough_click (GtkRange *range,
gint y,
gdouble *jump_perc)
{
- gint xthickness;
+ gint trough_border;
gint trough_width;
gint trough_height;
gint slider_y;
@@ -614,8 +651,8 @@ _gtk_range_default_vtrough_click (GtkRange *range,
g_return_val_if_fail (range != NULL, GTK_TROUGH_NONE);
g_return_val_if_fail (GTK_IS_RANGE (range), GTK_TROUGH_NONE);
- xthickness = GTK_WIDGET (range)->style->xthickness;
-
+ _gtk_range_get_props (range, NULL, &trough_border, NULL, NULL);
+
gtk_range_trough_vdims (range, &top, &bottom);
gdk_window_get_size (range->slider, NULL, &slider_length);
bottom += slider_length;
@@ -623,11 +660,11 @@ _gtk_range_default_vtrough_click (GtkRange *range,
if (should_invert (range, FALSE))
y = (bottom - y) + top;
- if ((x > xthickness) && (y > top))
+ if ((x > trough_border) && (y > top))
{
gdk_window_get_size (range->trough, &trough_width, &trough_height);
- if ((x < (trough_width - xthickness) && (y < bottom)))
+ if ((x < (trough_width - trough_border) && (y < bottom)))
{
if (jump_perc)
{
@@ -1662,25 +1699,29 @@ gtk_range_trough_hdims (GtkRange *range,
gint tmp_width;
gint tleft;
gint tright;
+ gint stepper_spacing;
+ gint trough_border;
g_return_if_fail (range != NULL);
gdk_window_get_size (range->trough, &trough_width, NULL);
gdk_window_get_size (range->slider, &slider_length, NULL);
- tleft = GTK_WIDGET (range)->style->xthickness;
- tright = trough_width - slider_length - GTK_WIDGET (range)->style->xthickness;
+ _gtk_range_get_props (range, NULL, &trough_border, NULL, &stepper_spacing);
+
+ tleft = trough_border;
+ tright = trough_width - slider_length - trough_border;
if (range->step_back)
{
gdk_window_get_size (range->step_back, &tmp_width, NULL);
- tleft += (tmp_width + RANGE_CLASS (range)->stepper_slider_spacing);
+ tleft += (tmp_width + stepper_spacing);
}
if (range->step_forw)
{
gdk_window_get_size (range->step_forw, &tmp_width, NULL);
- tright -= (tmp_width + RANGE_CLASS (range)->stepper_slider_spacing);
+ tright -= (tmp_width + stepper_spacing);
}
if (left)
@@ -1699,25 +1740,29 @@ gtk_range_trough_vdims (GtkRange *range,
gint tmp_height;
gint ttop;
gint tbottom;
+ gint stepper_spacing;
+ gint trough_border;
g_return_if_fail (range != NULL);
+ _gtk_range_get_props (range, NULL, &trough_border, NULL, &stepper_spacing);
+
gdk_window_get_size (range->trough, NULL, &trough_height);
gdk_window_get_size (range->slider, NULL, &slider_length);
- ttop = GTK_WIDGET (range)->style->ythickness;
- tbottom = trough_height - slider_length - GTK_WIDGET (range)->style->ythickness;
+ ttop = trough_border;
+ tbottom = trough_height - slider_length - trough_border;
if (range->step_back)
{
gdk_window_get_size (range->step_back, NULL, &tmp_height);
- ttop += (tmp_height + RANGE_CLASS (range)->stepper_slider_spacing);
+ ttop += (tmp_height + stepper_spacing);
}
if (range->step_forw)
{
gdk_window_get_size (range->step_forw, NULL, &tmp_height);
- tbottom -= (tmp_height + RANGE_CLASS (range)->stepper_slider_spacing);
+ tbottom -= (tmp_height + stepper_spacing);
}
if (top)
@@ -1763,3 +1808,27 @@ gtk_range_style_set (GtkWidget *widget,
}
}
}
+
+void
+_gtk_range_get_props (GtkRange *range,
+ gint *slider_width,
+ gint *trough_border,
+ gint *stepper_size,
+ gint *stepper_spacing)
+{
+ GtkWidget *widget = GTK_WIDGET (range);
+
+
+ if (slider_width)
+ gtk_widget_style_get (widget, "slider_width", slider_width, NULL);
+
+ if (trough_border)
+ gtk_widget_style_get (widget, "trough_border", trough_border, NULL);
+
+ if (stepper_size)
+ gtk_widget_style_get (widget, "stepper_size", stepper_size, NULL);
+
+ if (stepper_spacing)
+ gtk_widget_style_get (widget, "stepper_spacing", stepper_spacing, NULL);
+}
+