mirror of
https://gitlab.gnome.org/GNOME/gtk.git
synced 2024-09-30 11:07:38 +00:00
GtkScale: move public members to private structure
This commit is contained in:
parent
de9c5f8d3d
commit
65acc3641a
128
gtk/gtkscale.c
128
gtk/gtkscale.c
@ -47,12 +47,21 @@
|
|||||||
* unrelated code portions otherwise
|
* unrelated code portions otherwise
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define GTK_SCALE_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), GTK_TYPE_SCALE, GtkScalePrivate))
|
|
||||||
|
|
||||||
typedef struct _GtkScalePrivate GtkScalePrivate;
|
|
||||||
|
|
||||||
typedef struct _GtkScaleMark GtkScaleMark;
|
typedef struct _GtkScaleMark GtkScaleMark;
|
||||||
|
|
||||||
|
struct _GtkScalePriv
|
||||||
|
{
|
||||||
|
PangoLayout *layout;
|
||||||
|
|
||||||
|
GSList *marks;
|
||||||
|
|
||||||
|
gint digits;
|
||||||
|
|
||||||
|
guint draw_value : 1;
|
||||||
|
guint value_pos : 2;
|
||||||
|
};
|
||||||
|
|
||||||
struct _GtkScaleMark
|
struct _GtkScaleMark
|
||||||
{
|
{
|
||||||
gdouble value;
|
gdouble value;
|
||||||
@ -60,12 +69,6 @@ struct _GtkScaleMark
|
|||||||
GtkPositionType position;
|
GtkPositionType position;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct _GtkScalePrivate
|
|
||||||
{
|
|
||||||
PangoLayout *layout;
|
|
||||||
GSList *marks;
|
|
||||||
};
|
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
PROP_0,
|
PROP_0,
|
||||||
PROP_DIGITS,
|
PROP_DIGITS,
|
||||||
@ -373,7 +376,7 @@ gtk_scale_class_init (GtkScaleClass *class)
|
|||||||
add_slider_binding (binding_set, GDK_KP_End, 0,
|
add_slider_binding (binding_set, GDK_KP_End, 0,
|
||||||
GTK_SCROLL_END);
|
GTK_SCROLL_END);
|
||||||
|
|
||||||
g_type_class_add_private (gobject_class, sizeof (GtkScalePrivate));
|
g_type_class_add_private (gobject_class, sizeof (GtkScalePriv));
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@ -386,8 +389,14 @@ gtk_scale_orientation_notify (GtkRange *range,
|
|||||||
static void
|
static void
|
||||||
gtk_scale_init (GtkScale *scale)
|
gtk_scale_init (GtkScale *scale)
|
||||||
{
|
{
|
||||||
|
GtkScalePriv *priv;
|
||||||
GtkRange *range = GTK_RANGE (scale);
|
GtkRange *range = GTK_RANGE (scale);
|
||||||
|
|
||||||
|
scale->priv = G_TYPE_INSTANCE_GET_PRIVATE (scale,
|
||||||
|
GTK_TYPE_SCALE,
|
||||||
|
GtkScalePriv);
|
||||||
|
priv = scale->priv;
|
||||||
|
|
||||||
gtk_widget_set_can_focus (GTK_WIDGET (scale), TRUE);
|
gtk_widget_set_can_focus (GTK_WIDGET (scale), TRUE);
|
||||||
|
|
||||||
range->slider_size_fixed = TRUE;
|
range->slider_size_fixed = TRUE;
|
||||||
@ -396,10 +405,10 @@ gtk_scale_init (GtkScale *scale)
|
|||||||
range->has_stepper_c = FALSE;
|
range->has_stepper_c = FALSE;
|
||||||
range->has_stepper_d = FALSE;
|
range->has_stepper_d = FALSE;
|
||||||
|
|
||||||
scale->draw_value = TRUE;
|
priv->draw_value = TRUE;
|
||||||
scale->value_pos = GTK_POS_TOP;
|
priv->value_pos = GTK_POS_TOP;
|
||||||
scale->digits = 1;
|
priv->digits = 1;
|
||||||
range->round_digits = scale->digits;
|
range->round_digits = priv->digits;
|
||||||
|
|
||||||
gtk_scale_orientation_notify (range, NULL);
|
gtk_scale_orientation_notify (range, NULL);
|
||||||
g_signal_connect (scale, "notify::orientation",
|
g_signal_connect (scale, "notify::orientation",
|
||||||
@ -440,20 +449,19 @@ gtk_scale_get_property (GObject *object,
|
|||||||
GValue *value,
|
GValue *value,
|
||||||
GParamSpec *pspec)
|
GParamSpec *pspec)
|
||||||
{
|
{
|
||||||
GtkScale *scale;
|
GtkScale *scale = GTK_SCALE (object);
|
||||||
|
GtkScalePriv *priv = scale->priv;
|
||||||
scale = GTK_SCALE (object);
|
|
||||||
|
|
||||||
switch (prop_id)
|
switch (prop_id)
|
||||||
{
|
{
|
||||||
case PROP_DIGITS:
|
case PROP_DIGITS:
|
||||||
g_value_set_int (value, scale->digits);
|
g_value_set_int (value, priv->digits);
|
||||||
break;
|
break;
|
||||||
case PROP_DRAW_VALUE:
|
case PROP_DRAW_VALUE:
|
||||||
g_value_set_boolean (value, scale->draw_value);
|
g_value_set_boolean (value, priv->draw_value);
|
||||||
break;
|
break;
|
||||||
case PROP_VALUE_POS:
|
case PROP_VALUE_POS:
|
||||||
g_value_set_enum (value, scale->value_pos);
|
g_value_set_enum (value, priv->value_pos);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
||||||
@ -553,18 +561,20 @@ void
|
|||||||
gtk_scale_set_digits (GtkScale *scale,
|
gtk_scale_set_digits (GtkScale *scale,
|
||||||
gint digits)
|
gint digits)
|
||||||
{
|
{
|
||||||
|
GtkScalePriv *priv;
|
||||||
GtkRange *range;
|
GtkRange *range;
|
||||||
|
|
||||||
g_return_if_fail (GTK_IS_SCALE (scale));
|
g_return_if_fail (GTK_IS_SCALE (scale));
|
||||||
|
|
||||||
|
priv = scale->priv;
|
||||||
range = GTK_RANGE (scale);
|
range = GTK_RANGE (scale);
|
||||||
|
|
||||||
digits = CLAMP (digits, -1, MAX_DIGITS);
|
digits = CLAMP (digits, -1, MAX_DIGITS);
|
||||||
|
|
||||||
if (scale->digits != digits)
|
if (priv->digits != digits)
|
||||||
{
|
{
|
||||||
scale->digits = digits;
|
priv->digits = digits;
|
||||||
if (scale->draw_value)
|
if (priv->draw_value)
|
||||||
range->round_digits = digits;
|
range->round_digits = digits;
|
||||||
|
|
||||||
_gtk_scale_clear_layout (scale);
|
_gtk_scale_clear_layout (scale);
|
||||||
@ -587,7 +597,7 @@ gtk_scale_get_digits (GtkScale *scale)
|
|||||||
{
|
{
|
||||||
g_return_val_if_fail (GTK_IS_SCALE (scale), -1);
|
g_return_val_if_fail (GTK_IS_SCALE (scale), -1);
|
||||||
|
|
||||||
return scale->digits;
|
return scale->priv->digits;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -602,15 +612,19 @@ void
|
|||||||
gtk_scale_set_draw_value (GtkScale *scale,
|
gtk_scale_set_draw_value (GtkScale *scale,
|
||||||
gboolean draw_value)
|
gboolean draw_value)
|
||||||
{
|
{
|
||||||
|
GtkScalePriv *priv;
|
||||||
|
|
||||||
g_return_if_fail (GTK_IS_SCALE (scale));
|
g_return_if_fail (GTK_IS_SCALE (scale));
|
||||||
|
|
||||||
|
priv = scale->priv;
|
||||||
|
|
||||||
draw_value = draw_value != FALSE;
|
draw_value = draw_value != FALSE;
|
||||||
|
|
||||||
if (scale->draw_value != draw_value)
|
if (priv->draw_value != draw_value)
|
||||||
{
|
{
|
||||||
scale->draw_value = draw_value;
|
priv->draw_value = draw_value;
|
||||||
if (draw_value)
|
if (draw_value)
|
||||||
GTK_RANGE (scale)->round_digits = scale->digits;
|
GTK_RANGE (scale)->round_digits = priv->digits;
|
||||||
else
|
else
|
||||||
GTK_RANGE (scale)->round_digits = -1;
|
GTK_RANGE (scale)->round_digits = -1;
|
||||||
|
|
||||||
@ -636,7 +650,7 @@ gtk_scale_get_draw_value (GtkScale *scale)
|
|||||||
{
|
{
|
||||||
g_return_val_if_fail (GTK_IS_SCALE (scale), FALSE);
|
g_return_val_if_fail (GTK_IS_SCALE (scale), FALSE);
|
||||||
|
|
||||||
return scale->draw_value;
|
return scale->priv->draw_value;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -650,13 +664,16 @@ void
|
|||||||
gtk_scale_set_value_pos (GtkScale *scale,
|
gtk_scale_set_value_pos (GtkScale *scale,
|
||||||
GtkPositionType pos)
|
GtkPositionType pos)
|
||||||
{
|
{
|
||||||
|
GtkScalePriv *priv;
|
||||||
GtkWidget *widget;
|
GtkWidget *widget;
|
||||||
|
|
||||||
g_return_if_fail (GTK_IS_SCALE (scale));
|
g_return_if_fail (GTK_IS_SCALE (scale));
|
||||||
|
|
||||||
if (scale->value_pos != pos)
|
priv = scale->priv;
|
||||||
|
|
||||||
|
if (priv->value_pos != pos)
|
||||||
{
|
{
|
||||||
scale->value_pos = pos;
|
priv->value_pos = pos;
|
||||||
widget = GTK_WIDGET (scale);
|
widget = GTK_WIDGET (scale);
|
||||||
|
|
||||||
_gtk_scale_clear_layout (scale);
|
_gtk_scale_clear_layout (scale);
|
||||||
@ -680,21 +697,21 @@ gtk_scale_get_value_pos (GtkScale *scale)
|
|||||||
{
|
{
|
||||||
g_return_val_if_fail (GTK_IS_SCALE (scale), 0);
|
g_return_val_if_fail (GTK_IS_SCALE (scale), 0);
|
||||||
|
|
||||||
return scale->value_pos;
|
return scale->priv->value_pos;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
gtk_scale_get_range_border (GtkRange *range,
|
gtk_scale_get_range_border (GtkRange *range,
|
||||||
GtkBorder *border)
|
GtkBorder *border)
|
||||||
{
|
{
|
||||||
GtkScalePrivate *priv;
|
GtkScalePriv *priv;
|
||||||
GtkWidget *widget;
|
GtkWidget *widget;
|
||||||
GtkScale *scale;
|
GtkScale *scale;
|
||||||
gint w, h;
|
gint w, h;
|
||||||
|
|
||||||
widget = GTK_WIDGET (range);
|
widget = GTK_WIDGET (range);
|
||||||
scale = GTK_SCALE (range);
|
scale = GTK_SCALE (range);
|
||||||
priv = GTK_SCALE_GET_PRIVATE (scale);
|
priv = scale->priv;
|
||||||
|
|
||||||
_gtk_scale_get_value_size (scale, &w, &h);
|
_gtk_scale_get_value_size (scale, &w, &h);
|
||||||
|
|
||||||
@ -703,12 +720,12 @@ gtk_scale_get_range_border (GtkRange *range,
|
|||||||
border->top = 0;
|
border->top = 0;
|
||||||
border->bottom = 0;
|
border->bottom = 0;
|
||||||
|
|
||||||
if (scale->draw_value)
|
if (priv->draw_value)
|
||||||
{
|
{
|
||||||
gint value_spacing;
|
gint value_spacing;
|
||||||
gtk_widget_style_get (widget, "value-spacing", &value_spacing, NULL);
|
gtk_widget_style_get (widget, "value-spacing", &value_spacing, NULL);
|
||||||
|
|
||||||
switch (scale->value_pos)
|
switch (priv->value_pos)
|
||||||
{
|
{
|
||||||
case GTK_POS_LEFT:
|
case GTK_POS_LEFT:
|
||||||
border->left += w + value_spacing;
|
border->left += w + value_spacing;
|
||||||
@ -762,11 +779,10 @@ _gtk_scale_get_value_size (GtkScale *scale,
|
|||||||
gint *width,
|
gint *width,
|
||||||
gint *height)
|
gint *height)
|
||||||
{
|
{
|
||||||
|
GtkScalePriv *priv = scale->priv;
|
||||||
GtkRange *range;
|
GtkRange *range;
|
||||||
|
|
||||||
g_return_if_fail (GTK_IS_SCALE (scale));
|
if (priv->draw_value)
|
||||||
|
|
||||||
if (scale->draw_value)
|
|
||||||
{
|
{
|
||||||
PangoLayout *layout;
|
PangoLayout *layout;
|
||||||
PangoRectangle logical_rect;
|
PangoRectangle logical_rect;
|
||||||
@ -820,7 +836,7 @@ gtk_scale_get_mark_label_size (GtkScale *scale,
|
|||||||
gint *width2,
|
gint *width2,
|
||||||
gint *height2)
|
gint *height2)
|
||||||
{
|
{
|
||||||
GtkScalePrivate *priv = GTK_SCALE_GET_PRIVATE (scale);
|
GtkScalePriv *priv = scale->priv;
|
||||||
PangoLayout *layout;
|
PangoLayout *layout;
|
||||||
PangoRectangle logical_rect;
|
PangoRectangle logical_rect;
|
||||||
GSList *m;
|
GSList *m;
|
||||||
@ -953,7 +969,7 @@ gtk_scale_expose (GtkWidget *widget,
|
|||||||
GdkEventExpose *event)
|
GdkEventExpose *event)
|
||||||
{
|
{
|
||||||
GtkScale *scale = GTK_SCALE (widget);
|
GtkScale *scale = GTK_SCALE (widget);
|
||||||
GtkScalePrivate *priv = GTK_SCALE_GET_PRIVATE (scale);
|
GtkScalePriv *priv = scale->priv;
|
||||||
GtkRange *range = GTK_RANGE (scale);
|
GtkRange *range = GTK_RANGE (scale);
|
||||||
GtkStateType state_type;
|
GtkStateType state_type;
|
||||||
gint n_marks;
|
gint n_marks;
|
||||||
@ -1103,7 +1119,7 @@ gtk_scale_expose (GtkWidget *widget,
|
|||||||
g_free (marks);
|
g_free (marks);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (scale->draw_value)
|
if (priv->draw_value)
|
||||||
{
|
{
|
||||||
PangoLayout *layout;
|
PangoLayout *layout;
|
||||||
gint x, y;
|
gint x, y;
|
||||||
@ -1132,6 +1148,7 @@ gtk_scale_real_get_layout_offsets (GtkScale *scale,
|
|||||||
gint *x,
|
gint *x,
|
||||||
gint *y)
|
gint *y)
|
||||||
{
|
{
|
||||||
|
GtkScalePriv *priv = scale->priv;
|
||||||
GtkWidget *widget = GTK_WIDGET (scale);
|
GtkWidget *widget = GTK_WIDGET (scale);
|
||||||
GtkRange *range = GTK_RANGE (widget);
|
GtkRange *range = GTK_RANGE (widget);
|
||||||
PangoLayout *layout = gtk_scale_get_layout (scale);
|
PangoLayout *layout = gtk_scale_get_layout (scale);
|
||||||
@ -1152,7 +1169,7 @@ gtk_scale_real_get_layout_offsets (GtkScale *scale,
|
|||||||
|
|
||||||
if (range->orientation == GTK_ORIENTATION_HORIZONTAL)
|
if (range->orientation == GTK_ORIENTATION_HORIZONTAL)
|
||||||
{
|
{
|
||||||
switch (scale->value_pos)
|
switch (priv->value_pos)
|
||||||
{
|
{
|
||||||
case GTK_POS_LEFT:
|
case GTK_POS_LEFT:
|
||||||
*x = range->range_rect.x - value_spacing - logical_rect.width;
|
*x = range->range_rect.x - value_spacing - logical_rect.width;
|
||||||
@ -1185,7 +1202,7 @@ gtk_scale_real_get_layout_offsets (GtkScale *scale,
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
switch (scale->value_pos)
|
switch (priv->value_pos)
|
||||||
{
|
{
|
||||||
case GTK_POS_LEFT:
|
case GTK_POS_LEFT:
|
||||||
*x = range->range_rect.x - logical_rect.width - value_spacing;
|
*x = range->range_rect.x - logical_rect.width - value_spacing;
|
||||||
@ -1232,6 +1249,7 @@ gchar*
|
|||||||
_gtk_scale_format_value (GtkScale *scale,
|
_gtk_scale_format_value (GtkScale *scale,
|
||||||
gdouble value)
|
gdouble value)
|
||||||
{
|
{
|
||||||
|
GtkScalePriv *priv = scale->priv;
|
||||||
gchar *fmt = NULL;
|
gchar *fmt = NULL;
|
||||||
|
|
||||||
g_signal_emit (scale,
|
g_signal_emit (scale,
|
||||||
@ -1244,7 +1262,7 @@ _gtk_scale_format_value (GtkScale *scale,
|
|||||||
return fmt;
|
return fmt;
|
||||||
else
|
else
|
||||||
/* insert a LRM, to prevent -20 to come out as 20- in RTL locales */
|
/* insert a LRM, to prevent -20 to come out as 20- in RTL locales */
|
||||||
return g_strdup_printf ("\342\200\216%0.*f", scale->digits, value);
|
return g_strdup_printf ("\342\200\216%0.*f", priv->digits, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@ -1274,18 +1292,20 @@ gtk_scale_finalize (GObject *object)
|
|||||||
PangoLayout *
|
PangoLayout *
|
||||||
gtk_scale_get_layout (GtkScale *scale)
|
gtk_scale_get_layout (GtkScale *scale)
|
||||||
{
|
{
|
||||||
GtkScalePrivate *priv = GTK_SCALE_GET_PRIVATE (scale);
|
GtkScalePriv *priv;
|
||||||
gchar *txt;
|
gchar *txt;
|
||||||
|
|
||||||
g_return_val_if_fail (GTK_IS_SCALE (scale), NULL);
|
g_return_val_if_fail (GTK_IS_SCALE (scale), NULL);
|
||||||
|
|
||||||
|
priv = scale->priv;
|
||||||
|
|
||||||
if (!priv->layout)
|
if (!priv->layout)
|
||||||
{
|
{
|
||||||
if (scale->draw_value)
|
if (priv->draw_value)
|
||||||
priv->layout = gtk_widget_create_pango_layout (GTK_WIDGET (scale), NULL);
|
priv->layout = gtk_widget_create_pango_layout (GTK_WIDGET (scale), NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (scale->draw_value)
|
if (priv->draw_value)
|
||||||
{
|
{
|
||||||
txt = _gtk_scale_format_value (scale,
|
txt = _gtk_scale_format_value (scale,
|
||||||
GTK_RANGE (scale)->adjustment->value);
|
GTK_RANGE (scale)->adjustment->value);
|
||||||
@ -1335,7 +1355,7 @@ gtk_scale_get_layout_offsets (GtkScale *scale,
|
|||||||
void
|
void
|
||||||
_gtk_scale_clear_layout (GtkScale *scale)
|
_gtk_scale_clear_layout (GtkScale *scale)
|
||||||
{
|
{
|
||||||
GtkScalePrivate *priv = GTK_SCALE_GET_PRIVATE (scale);
|
GtkScalePriv *priv = scale->priv;
|
||||||
|
|
||||||
g_return_if_fail (GTK_IS_SCALE (scale));
|
g_return_if_fail (GTK_IS_SCALE (scale));
|
||||||
|
|
||||||
@ -1364,10 +1384,12 @@ gtk_scale_mark_free (GtkScaleMark *mark)
|
|||||||
void
|
void
|
||||||
gtk_scale_clear_marks (GtkScale *scale)
|
gtk_scale_clear_marks (GtkScale *scale)
|
||||||
{
|
{
|
||||||
GtkScalePrivate *priv = GTK_SCALE_GET_PRIVATE (scale);
|
GtkScalePriv *priv;
|
||||||
|
|
||||||
g_return_if_fail (GTK_IS_SCALE (scale));
|
g_return_if_fail (GTK_IS_SCALE (scale));
|
||||||
|
|
||||||
|
priv = scale->priv;
|
||||||
|
|
||||||
g_slist_foreach (priv->marks, (GFunc)gtk_scale_mark_free, NULL);
|
g_slist_foreach (priv->marks, (GFunc)gtk_scale_mark_free, NULL);
|
||||||
g_slist_free (priv->marks);
|
g_slist_free (priv->marks);
|
||||||
priv->marks = NULL;
|
priv->marks = NULL;
|
||||||
@ -1417,12 +1439,16 @@ gtk_scale_add_mark (GtkScale *scale,
|
|||||||
GtkPositionType position,
|
GtkPositionType position,
|
||||||
const gchar *markup)
|
const gchar *markup)
|
||||||
{
|
{
|
||||||
GtkScalePrivate *priv = GTK_SCALE_GET_PRIVATE (scale);
|
GtkScalePriv *priv;
|
||||||
GtkScaleMark *mark;
|
GtkScaleMark *mark;
|
||||||
GSList *m;
|
GSList *m;
|
||||||
gdouble *values;
|
gdouble *values;
|
||||||
gint n, i;
|
gint n, i;
|
||||||
|
|
||||||
|
g_return_if_fail (GTK_IS_SCALE (scale));
|
||||||
|
|
||||||
|
priv = scale->priv;
|
||||||
|
|
||||||
mark = g_new (GtkScaleMark, 1);
|
mark = g_new (GtkScaleMark, 1);
|
||||||
mark->value = value;
|
mark->value = value;
|
||||||
mark->markup = g_strdup (markup);
|
mark->markup = g_strdup (markup);
|
||||||
|
@ -46,15 +46,15 @@ G_BEGIN_DECLS
|
|||||||
|
|
||||||
|
|
||||||
typedef struct _GtkScale GtkScale;
|
typedef struct _GtkScale GtkScale;
|
||||||
|
typedef struct _GtkScalePriv GtkScalePriv;
|
||||||
typedef struct _GtkScaleClass GtkScaleClass;
|
typedef struct _GtkScaleClass GtkScaleClass;
|
||||||
|
|
||||||
struct _GtkScale
|
struct _GtkScale
|
||||||
{
|
{
|
||||||
GtkRange range;
|
GtkRange range;
|
||||||
|
|
||||||
gint GSEAL (digits);
|
/* <private> */
|
||||||
guint GSEAL (draw_value) : 1;
|
GtkScalePriv *priv;
|
||||||
guint GSEAL (value_pos) : 2;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
struct _GtkScaleClass
|
struct _GtkScaleClass
|
||||||
|
Loading…
Reference in New Issue
Block a user