2009-01-19 Claudio Saavedra <csaavedra@igalia.com>
authorClaudio Saavedra <csaavedra@igalia.com>
Mon, 19 Jan 2009 16:41:35 +0000 (16:41 +0000)
committerClaudio Saavedra <csaavedra@igalia.com>
Mon, 19 Jan 2009 16:41:35 +0000 (16:41 +0000)
* src/hildon-date-selector.c: (hildon_date_selector_get_date): Check
that there's actually a month or year selected before obtaining them.
* src/hildon-picker-dialog.c: (_restore_current_selection): Block emission
of the HildonTouchSelector::changed signal, as it was emitted on every
single item selection.

Fix some warnings and possible crashers due to the selection restoring.

ChangeLog
src/hildon-date-selector.c
src/hildon-picker-dialog.c

index 2cfe54a..5f3583c 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,15 @@
 2009-01-19  Claudio Saavedra  <csaavedra@igalia.com>
 
+       * src/hildon-date-selector.c: (hildon_date_selector_get_date): Check
+       that there's actually a month or year selected before obtaining them.
+       * src/hildon-picker-dialog.c: (_restore_current_selection): Block emission
+       of the HildonTouchSelector::changed signal, as it was emitted on every
+       single item selection.
+
+       Fix some warnings and possible crashers due to the selection restoring.
+
+2009-01-19  Claudio Saavedra  <csaavedra@igalia.com>
+
        * src/hildon-picker-button.c: (hildon_picker_button_clicked): Connect
        the signal handlers only after creating the dialog instead of on every
        button click.
index 1bbd993..a2371c0 100644 (file)
@@ -686,20 +686,19 @@ hildon_date_selector_get_date (HildonDateSelector * selector,
   GtkTreeIter iter;
 
   if (year != NULL) {
-    hildon_touch_selector_get_selected (HILDON_TOUCH_SELECTOR (selector),
-                                        selector->priv->year_column, &iter);
-    gtk_tree_model_get (selector->priv->year_model,
-                        &iter, COLUMN_INT, year, -1);
+    if (hildon_touch_selector_get_selected (HILDON_TOUCH_SELECTOR (selector),
+                                            selector->priv->year_column, &iter))
+      gtk_tree_model_get (selector->priv->year_model,
+                          &iter, COLUMN_INT, year, -1);
   }
 
   if (month != NULL) {
-    hildon_touch_selector_get_selected (HILDON_TOUCH_SELECTOR (selector),
-                                        selector->priv->month_column, &iter);
-    gtk_tree_model_get (selector->priv->month_model,
-                        &iter, COLUMN_INT, month, -1);
+    if (hildon_touch_selector_get_selected (HILDON_TOUCH_SELECTOR (selector),
+                                            selector->priv->month_column, &iter))
+      gtk_tree_model_get (selector->priv->month_model,
+                          &iter, COLUMN_INT, month, -1);
   }
 
-
   if (day != NULL) {
     if (hildon_touch_selector_get_selected (HILDON_TOUCH_SELECTOR (selector),
                                             selector->priv->day_column, &iter))
index 0e07224..36430cc 100644 (file)
@@ -442,6 +442,7 @@ _restore_current_selection (HildonPickerDialog *dialog)
     return;
   }
 
+  g_signal_handler_block (selector, dialog->priv->signal_changed_id);
   for (iter = current_selection, i = 0; iter; iter = g_slist_next (iter), i++) {
     selected = (GList *) (iter->data);
     model = hildon_touch_selector_get_model (selector, i);
@@ -452,6 +453,7 @@ _restore_current_selection (HildonPickerDialog *dialog)
       hildon_touch_selector_select_iter (selector, i, &tree_iter, FALSE);
     }
   }
+  g_signal_handler_unblock (selector, dialog->priv->signal_changed_id);
 }
 
 static gboolean