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.
This commit is contained in:
117
gtk/gtkrange.c
117
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);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user