2009-01-15 Alberto Garcia <agarcia@igalia.com>
authorAlberto Garcia <agarcia@igalia.com>
Thu, 15 Jan 2009 17:47:52 +0000 (17:47 +0000)
committerAlberto Garcia <agarcia@igalia.com>
Thu, 15 Jan 2009 17:47:52 +0000 (17:47 +0000)
* src/hildon-picker-dialog.c (_hildon_picker_dialog_set_selector):
Don't check whether the new selector is NULL: it cannot be.
Hold a reference to the selector while doing the replacement.

ChangeLog
src/hildon-picker-dialog.c

index 0bff2c4..3cccc80 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2009-01-15  Alberto Garcia  <agarcia@igalia.com>
+
+       * src/hildon-picker-dialog.c (_hildon_picker_dialog_set_selector):
+       Don't check whether the new selector is NULL: it cannot be.
+       Hold a reference to the selector while doing the replacement.
+
 2009-01-15  Claudio Saavedra  <csaavedra@igalia.com>
 
        * src/hildon-picker-dialog.c: (_hildon_picker_dialog_set_selector): Remove
index 1548d20..4734414 100644 (file)
@@ -489,32 +489,33 @@ static gboolean
 _hildon_picker_dialog_set_selector (HildonPickerDialog * dialog,
                                     HildonTouchSelector * selector)
 {
+  g_object_ref (selector);
+
+  /* Remove the old selector, if any */
   if (dialog->priv->selector != NULL) {
     gtk_container_remove (GTK_CONTAINER (GTK_DIALOG (dialog)->vbox),
                           dialog->priv->selector);
-    dialog->priv->selector = NULL;
+    if (dialog->priv->signal_columns_changed_id) {
+            g_signal_handler_disconnect (dialog->priv->selector,
+                                         dialog->priv->signal_columns_changed_id);
+    }
   }
 
   dialog->priv->selector = GTK_WIDGET (selector);
 
-  if (dialog->priv->selector != NULL) {
-    gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->vbox),
-                        dialog->priv->selector, TRUE, TRUE, 0);
+  /* Pack the new selector */
+  gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->vbox),
+                      dialog->priv->selector, TRUE, TRUE, 0);
 
-   /* NOTE: this is a little hackish, but required at this moment
-      in order to ensure a correct height visualization */
-    gtk_widget_set_size_request (GTK_WIDGET (dialog->priv->selector), -1,
-                                 HILDON_TOUCH_SELECTOR_HEIGHT);
+  g_object_unref (selector);
 
-    gtk_widget_show (dialog->priv->selector);
-  }
+  /* Ensure that the dialog's height is correct */
+  gtk_widget_set_size_request (GTK_WIDGET (dialog->priv->selector), -1,
+                               HILDON_TOUCH_SELECTOR_HEIGHT);
 
-  setup_interaction_mode (dialog);
+  gtk_widget_show (dialog->priv->selector);
 
-  if (dialog->priv->signal_columns_changed_id) {
-     g_signal_handler_disconnect (dialog->priv->selector,
-                                  dialog->priv->signal_columns_changed_id);
-   }
+  setup_interaction_mode (dialog);
 
   dialog->priv->signal_columns_changed_id = g_signal_connect (G_OBJECT (dialog->priv->selector),
                                                               "columns-changed",