From fd41c7346f2277fd1d961fece7d27b352c126e28 Mon Sep 17 00:00:00 2001 From: Alberto Garcia Date: Thu, 12 Mar 2009 16:13:08 +0000 Subject: [PATCH] 2009-03-12 Alberto Garcia * src/hildon-button.c (hildon_button_class_init): Don't make "title" and "value" construction properties, to prevent them from overwriting labels set from derived classes. * src/hildon-picker-button.c (hildon_picker_button_set_selector): Allow setting a NULL selector. (hildon_picker_button_class_init): Make touch-selector a construction property. * src/hildon-date-button.c (hildon_date_button_class_init) (+hildon_date_button_constructed): Add a default date selector if none is provided. --- ChangeLog | 15 +++++++++++++++ src/hildon-button.c | 4 ++-- src/hildon-date-button.c | 17 ++++++++++++++++- src/hildon-picker-button.c | 37 ++++++++++++++++++++++--------------- 4 files changed, 55 insertions(+), 18 deletions(-) diff --git a/ChangeLog b/ChangeLog index 091f451..9c2fbbc 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,18 @@ +2009-03-12 Alberto Garcia + + * src/hildon-button.c (hildon_button_class_init): Don't make + "title" and "value" construction properties, to prevent them from + overwriting labels set from derived classes. + + * src/hildon-picker-button.c + (hildon_picker_button_set_selector): Allow setting a NULL selector. + (hildon_picker_button_class_init): Make touch-selector a + construction property. + + * src/hildon-date-button.c (hildon_date_button_class_init) + (+hildon_date_button_constructed): Add a default date selector if + none is provided. + 2009-03-12 Claudio Saavedra * src/hildon-touch-selector.c: Small documentation fixes. diff --git a/src/hildon-button.c b/src/hildon-button.c index 72509c1..25a1678 100644 --- a/src/hildon-button.c +++ b/src/hildon-button.c @@ -243,7 +243,7 @@ hildon_button_class_init (HildonButtonClass *klass) "Title", "Text of the title label inside the button", NULL, - G_PARAM_READWRITE | G_PARAM_CONSTRUCT)); + G_PARAM_READWRITE)); g_object_class_install_property ( gobject_class, @@ -253,7 +253,7 @@ hildon_button_class_init (HildonButtonClass *klass) "Value", "Text of the value label inside the button", NULL, - G_PARAM_READWRITE | G_PARAM_CONSTRUCT)); + G_PARAM_READWRITE)); g_object_class_install_property ( gobject_class, diff --git a/src/hildon-date-button.c b/src/hildon-date-button.c index 75fb137..b205789 100644 --- a/src/hildon-date-button.c +++ b/src/hildon-date-button.c @@ -74,11 +74,26 @@ hildon_date_button_set_property (GObject * object, guint property_id, #endif static void +hildon_date_button_constructed (GObject *object) +{ + HildonPickerButton *button = HILDON_PICKER_BUTTON (object); + + if (G_OBJECT_CLASS (hildon_date_button_parent_class)->constructed) + G_OBJECT_CLASS (hildon_date_button_parent_class)->constructed (object); + + if (hildon_picker_button_get_selector (button) == NULL) { + GtkWidget *selector = hildon_date_selector_new (); + hildon_picker_button_set_selector (button, HILDON_TOUCH_SELECTOR (selector)); + } +} + +static void hildon_date_button_class_init (HildonDateButtonClass * klass) { -#if 0 GObjectClass *object_class = G_OBJECT_CLASS (klass); + object_class->constructed = hildon_date_button_constructed; +#if 0 g_type_class_add_private (klass, sizeof (HildonDateButtonPrivate)); object_class->get_property = hildon_date_button_get_property; diff --git a/src/hildon-picker-button.c b/src/hildon-picker-button.c index 6f89f39..6b02e2d 100644 --- a/src/hildon-picker-button.c +++ b/src/hildon-picker-button.c @@ -330,7 +330,7 @@ hildon_picker_button_class_init (HildonPickerButtonClass * klass) "HildonTouchSelector widget", "HildonTouchSelector widget to be launched on button clicked", HILDON_TYPE_TOUCH_SELECTOR, - G_PARAM_READWRITE)); + G_PARAM_READWRITE | G_PARAM_CONSTRUCT)); g_object_class_install_property (object_class, PROP_DONE_BUTTON_TEXT, g_param_spec_string ("done-button-text", @@ -442,10 +442,10 @@ hildon_picker_button_set_selector (HildonPickerButton * button, HildonTouchSelector * selector) { HildonPickerButtonPrivate *priv; - gchar *value; + gchar *value = NULL; g_return_if_fail (HILDON_IS_PICKER_BUTTON (button)); - g_return_if_fail (HILDON_IS_TOUCH_SELECTOR (selector)); + g_return_if_fail (!selector || HILDON_IS_TOUCH_SELECTOR (selector)); priv = GET_PRIVATE (button); @@ -459,22 +459,29 @@ hildon_picker_button_set_selector (HildonPickerButton * button, g_object_unref (priv->selector); } - priv->selector = g_object_ref (selector); + priv->selector = GTK_WIDGET (selector); - g_signal_connect (G_OBJECT (selector), "changed", - G_CALLBACK (hildon_picker_button_selector_selection_changed), - button); + if (selector) { + g_object_ref (selector); - g_signal_connect (G_OBJECT (selector), "columns-changed", - G_CALLBACK (hildon_picker_button_selector_columns_changed), - button); + g_signal_connect (G_OBJECT (selector), "changed", + G_CALLBACK (hildon_picker_button_selector_selection_changed), + button); - value = hildon_touch_selector_get_current_text (HILDON_TOUCH_SELECTOR (priv->selector)); - if (value) { - hildon_button_set_value (HILDON_BUTTON (button), value); - g_free (value); - hildon_picker_button_value_changed (button); + g_signal_connect (G_OBJECT (selector), "columns-changed", + G_CALLBACK (hildon_picker_button_selector_columns_changed), + button); + + value = hildon_touch_selector_get_current_text (HILDON_TOUCH_SELECTOR (priv->selector)); } + + if (!value) + value = g_strdup (""); + + hildon_button_set_value (HILDON_BUTTON (button), value); + hildon_picker_button_value_changed (button); + + g_free (value); } /** -- 1.7.9.5