[gtk+] GtkBox: Convert to g_object_install_properties
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+] GtkBox: Convert to g_object_install_properties
- Date: Mon, 9 Jun 2014 17:39:24 +0000 (UTC)
commit 06564f5df66fd4cd02a68b5d1417b07076d46dea
Author: Matthias Clasen <mclasen redhat com>
Date: Sat Jun 7 10:59:14 2014 -0400
GtkBox: Convert to g_object_install_properties
gtk/gtkbox.c | 85 ++++++++++++++++++++++++++++++++--------------------------
1 files changed, 47 insertions(+), 38 deletions(-)
---
diff --git a/gtk/gtkbox.c b/gtk/gtkbox.c
index 1ca6482..96a86a3 100644
--- a/gtk/gtkbox.c
+++ b/gtk/gtkbox.c
@@ -95,7 +95,8 @@ enum {
PROP_BASELINE_POSITION,
/* orientable */
- PROP_ORIENTATION
+ PROP_ORIENTATION,
+ LAST_PROP = PROP_ORIENTATION
};
enum {
@@ -123,6 +124,8 @@ struct _GtkBoxPrivate
guint baseline_pos : 2;
};
+static GParamSpec *props[LAST_PROP] = { NULL, };
+
/*
* GtkBoxChild:
* @widget: the child widget, packed into the GtkBox.
@@ -248,32 +251,29 @@ gtk_box_class_init (GtkBoxClass *class)
PROP_ORIENTATION,
"orientation");
- g_object_class_install_property (object_class,
- PROP_SPACING,
- g_param_spec_int ("spacing",
- P_("Spacing"),
- P_("The amount of space between children"),
- 0,
- G_MAXINT,
- 0,
- GTK_PARAM_READWRITE));
-
- g_object_class_install_property (object_class,
- PROP_HOMOGENEOUS,
- g_param_spec_boolean ("homogeneous",
- P_("Homogeneous"),
- P_("Whether the children should all be the same
size"),
- FALSE,
- GTK_PARAM_READWRITE));
-
- g_object_class_install_property (object_class,
- PROP_BASELINE_POSITION,
- g_param_spec_enum ("baseline-position",
- P_("Baseline position"),
- P_("The position of the baseline aligned widgets if
extra space is available"),
- GTK_TYPE_BASELINE_POSITION,
- GTK_BASELINE_POSITION_CENTER,
- GTK_PARAM_READWRITE));
+ props[PROP_SPACING] =
+ g_param_spec_int ("spacing",
+ P_("Spacing"),
+ P_("The amount of space between children"),
+ 0, G_MAXINT, 0,
+ GTK_PARAM_READWRITE);
+
+ props[PROP_HOMOGENEOUS] =
+ g_param_spec_boolean ("homogeneous",
+ P_("Homogeneous"),
+ P_("Whether the children should all be the same size"),
+ FALSE,
+ GTK_PARAM_READWRITE);
+
+ props[PROP_BASELINE_POSITION] =
+ g_param_spec_enum ("baseline-position",
+ P_("Baseline position"),
+ P_("The position of the baseline aligned widgets if extra space is available"),
+ GTK_TYPE_BASELINE_POSITION,
+ GTK_BASELINE_POSITION_CENTER,
+ GTK_PARAM_READWRITE);
+
+ g_object_class_install_properties (object_class, LAST_PROP, props);
/**
* GtkBox:expand:
@@ -374,9 +374,16 @@ gtk_box_set_property (GObject *object,
switch (prop_id)
{
case PROP_ORIENTATION:
- private->orientation = g_value_get_enum (value);
- _gtk_orientable_set_style_classes (GTK_ORIENTABLE (box));
- gtk_widget_queue_resize (GTK_WIDGET (box));
+ {
+ GtkOrientation orientation = g_value_get_enum (value);
+ if (private->orientation != orientation)
+ {
+ private->orientation = orientation;
+ _gtk_orientable_set_style_classes (GTK_ORIENTABLE (box));
+ gtk_widget_queue_resize (GTK_WIDGET (box));
+ g_object_notify (object, "orientation");
+ }
+ }
break;
case PROP_SPACING:
gtk_box_set_spacing (box, g_value_get_int (value));
@@ -2104,10 +2111,12 @@ gtk_box_set_homogeneous (GtkBox *box,
private = box->priv;
- if ((homogeneous ? TRUE : FALSE) != private->homogeneous)
+ homogeneous = homogeneous != FALSE;
+
+ if (private->homogeneous != homogeneous)
{
- private->homogeneous = homogeneous ? TRUE : FALSE;
- g_object_notify (G_OBJECT (box), "homogeneous");
+ private->homogeneous = homogeneous;
+ g_object_notify_by_pspec (G_OBJECT (box), props[PROP_HOMOGENEOUS]);
gtk_widget_queue_resize (GTK_WIDGET (box));
}
}
@@ -2147,12 +2156,12 @@ gtk_box_set_spacing (GtkBox *box,
private = box->priv;
- if (spacing != private->spacing)
+ if (private->spacing != spacing)
{
private->spacing = spacing;
_gtk_box_set_spacing_set (box, TRUE);
- g_object_notify (G_OBJECT (box), "spacing");
+ g_object_notify_by_pspec (G_OBJECT (box), props[PROP_SPACING]);
gtk_widget_queue_resize (GTK_WIDGET (box));
}
@@ -2198,11 +2207,11 @@ gtk_box_set_baseline_position (GtkBox *box,
private = box->priv;
- if (position != private->baseline_pos)
+ if (private->baseline_pos != position)
{
private->baseline_pos = position;
- g_object_notify (G_OBJECT (box), "baseline-position");
+ g_object_notify_by_pspec (G_OBJECT (box), props[PROP_BASELINE_POSITION]);
gtk_widget_queue_resize (GTK_WIDGET (box));
}
@@ -2219,7 +2228,7 @@ gtk_box_set_baseline_position (GtkBox *box,
* Since: 3.10
**/
GtkBaselinePosition
-gtk_box_get_baseline_position (GtkBox *box)
+gtk_box_get_baseline_position (GtkBox *box)
{
g_return_val_if_fail (GTK_IS_BOX (box), GTK_BASELINE_POSITION_CENTER);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]