_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",