From: Alejandro PiƱeiro Date: Thu, 9 Oct 2008 14:36:43 +0000 (+0000) Subject: 2008-10-09 Alejandro Pinheiro X-Git-Tag: 2.1.66-1~441 X-Git-Url: https://vcs.maemo.org/git/?a=commitdiff_plain;h=b0bb04a0b8e433915287e25420f34e4c53ab5374;p=hildon 2008-10-09 Alejandro Pinheiro * src/hildon-picker-dialog.c (hildon_picker_dialog_realize): Removed as not required (hildon_picker_dialog_class_init): Avoid to redefine widget->realize * src/hildon-picker-button.c (_current_selector_empty): New function, checks if the selector is empty (hildon_picker_button_clicked): Now it checks (using _current_selector_empty) if the current selector is empty, in order to avoid to show the dialog close the dialog in this case (and shows a g_warning). Fixes: NB#88946 (Hildon Picker button should disable itself if there are no values) --- diff --git a/ChangeLog b/ChangeLog index 80f7cb6..353896c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,16 @@ +2008-10-09 Alejandro Pinheiro + + * src/hildon-picker-dialog.c + (hildon_picker_dialog_realize): Removed as not required + (hildon_picker_dialog_class_init): Avoid to redefine widget->realize + * src/hildon-picker-button.c + (_current_selector_empty): New function, checks if the selector is empty + (hildon_picker_button_clicked): Now it checks (using _current_selector_empty) + if the current selector is empty, in order to avoid to show the dialog + close the dialog in this case (and shows a g_warning). + + Fixes: NB#88946 (Hildon Picker button should disable itself if there are no values) + 2008-10-09 Alejandro G. Castro * src/hildon-pannable-area.c, diff --git a/src/hildon-picker-button.c b/src/hildon-picker-button.c index 6b3e2b0..7a87778 100644 --- a/src/hildon-picker-button.c +++ b/src/hildon-picker-button.c @@ -64,6 +64,11 @@ enum static guint picker_button_signals[LAST_SIGNAL] = { 0 }; +static gboolean +_current_selector_empty (HildonPickerButton *button); + + + static void hildon_picker_button_get_property (GObject * object, guint property_id, GValue * value, GParamSpec * pspec) @@ -152,17 +157,21 @@ hildon_picker_button_clicked (GtkButton * button) hildon_button_get_title (HILDON_BUTTON (button))); } - response = gtk_dialog_run (GTK_DIALOG (priv->dialog)); - switch (response) { - case GTK_RESPONSE_OK: - hildon_button_set_value (HILDON_BUTTON (button), - hildon_touch_selector_get_current_text - (HILDON_TOUCH_SELECTOR (priv->selector))); - g_signal_emit (HILDON_PICKER_BUTTON (button), - picker_button_signals[VALUE_CHANGED], 0); - break; + if (_current_selector_empty (HILDON_PICKER_BUTTON (button))) { + g_warning ("There are no elements to selects!! Not showing the dialog!!"); + } else { + response = gtk_dialog_run (GTK_DIALOG (priv->dialog)); + switch (response) { + case GTK_RESPONSE_OK: + hildon_button_set_value (HILDON_BUTTON (button), + hildon_touch_selector_get_current_text + (HILDON_TOUCH_SELECTOR (priv->selector))); + g_signal_emit (HILDON_PICKER_BUTTON (button), + picker_button_signals[VALUE_CHANGED], 0); + break; + } + gtk_widget_hide (priv->dialog); } - gtk_widget_hide (priv->dialog); } static void @@ -222,6 +231,34 @@ hildon_picker_button_init (HildonPickerButton * self) priv->done_button_text = NULL; } +static gboolean +_current_selector_empty (HildonPickerButton *button) +{ + HildonPickerButtonPrivate *priv; + HildonTouchSelector *selector = NULL; + GtkTreeModel *model = NULL; + GtkTreeIter iter; + gint i = 0; + + priv = GET_PRIVATE (button); + selector = HILDON_TOUCH_SELECTOR (priv->selector); + + g_return_val_if_fail (HILDON_IS_TOUCH_SELECTOR (selector), TRUE); + + if (hildon_touch_selector_has_multiple_selection (selector)) { + return FALSE; + } else { + for (i=0; i < hildon_touch_selector_get_num_columns (selector); i++) { + model = hildon_touch_selector_get_model (selector, i); + + if (gtk_tree_model_get_iter_first (model, &iter)) { + return FALSE; + } + } + return TRUE; + } +} + /** * hildon_picker_button_new: * @size: One of #HildonSizeType, specifying the size of the new button. diff --git a/src/hildon-picker-dialog.c b/src/hildon-picker-dialog.c index 0137c7c..2a7bea8 100644 --- a/src/hildon-picker-dialog.c +++ b/src/hildon-picker-dialog.c @@ -82,7 +82,6 @@ hildon_picker_dialog_get_property (GObject * object, guint prop_id, GValue * value, GParamSpec * pspec); /* gtkwidget */ -static void hildon_picker_dialog_realize (GtkWidget * widget); /* private functions */ static gboolean requires_done_button (HildonPickerDialog * dialog); @@ -117,7 +116,6 @@ hildon_picker_dialog_class_init (HildonPickerDialogClass * class) gobject_class->get_property = hildon_picker_dialog_get_property; /* GtkWidget */ - widget_class->realize = hildon_picker_dialog_realize; /* HildonPickerDialog */ class->set_selector = _hildon_picker_dialog_set_selector; @@ -205,15 +203,6 @@ hildon_picker_dialog_get_property (GObject * object, } } - -static void -hildon_picker_dialog_realize (GtkWidget * widget) -{ - GTK_WIDGET_CLASS (hildon_picker_dialog_parent_class)->realize (widget); - -/* gdk_window_set_decorations (widget->window, GDK_DECOR_BORDER); */ -} - /* ------------------------------ PRIVATE METHODS ---------------------------- */ static void _select_on_selector_changed_cb (HildonTouchSelector * selector,