* check for a valid foldername
[modest] / src / maemo / modest-store-widget.c
index 6a14a0c..f77a087 100644 (file)
@@ -48,7 +48,12 @@ struct _ModestStoreWidgetPrivate {
        
        GtkWidget *servername;
        GtkWidget *username;
+       
+       ModestPairList *security_protos;
        GtkWidget *security;
+       
+       ModestPairList *transport_store_protos;
+       
        GtkWidget *auth;
        GtkWidget *chooser;
        GtkWidget *remember_pwd;
@@ -196,7 +201,6 @@ on_entry_changed (GtkEntry *entry, gpointer user_data)
 static GtkWidget*
 imap_pop_configuration (ModestStoreWidget *self)
 {
-       ModestPairList *protos;
        ModestStoreWidgetPrivate *priv;
        GtkWidget *label, *box, *hbox;
        GtkWidget *combo;
@@ -228,9 +232,11 @@ imap_pop_configuration (ModestStoreWidget *self)
        gtk_label_set_markup (GTK_LABEL(label),_("<b>Security</b>"));
        gtk_box_pack_start (GTK_BOX(box), label, FALSE, FALSE, 0);
 
-       protos = modest_protocol_info_get_connection_protocol_pair_list ();
-       priv->security = modest_combo_box_new (protos, g_str_equal);
-       modest_pair_list_free (protos);
+       /* Note: This ModestPairList* must exist for as long as the combo
+        * that uses it, because the ModestComboBox uses the ID opaquely, 
+        * so it can't know how to manage its memory. */
+       priv->security_protos = modest_protocol_info_get_connection_protocol_pair_list ();
+       priv->security = modest_combo_box_new (priv->security_protos, g_str_equal);
        
        hbox = gtk_hbox_new (FALSE, 6);
        label = gtk_label_new(NULL);
@@ -245,9 +251,11 @@ imap_pop_configuration (ModestStoreWidget *self)
        gtk_label_set_text (GTK_LABEL(label),_("Authentication:"));
        gtk_box_pack_start (GTK_BOX(hbox), label, FALSE, FALSE, 6);
        
-       protos = modest_protocol_info_get_transport_store_protocol_pair_list ();
-       combo =  modest_combo_box_new (protos, g_str_equal);
-       modest_pair_list_free (protos);
+       /* Note: This ModestPairList* must exist for as long as the combo
+        * that uses it, because the ModestComboBox uses the ID opaquely, 
+        * so it can't know how to manage its memory. */
+       priv->transport_store_protos = modest_protocol_info_get_transport_store_protocol_pair_list ();
+       combo =  modest_combo_box_new (priv->transport_store_protos, g_str_equal);
 
        gtk_box_pack_start (GTK_BOX(hbox), combo, FALSE, FALSE, 0);
        priv->remember_pwd =
@@ -268,6 +276,12 @@ imap_pop_configuration (ModestStoreWidget *self)
 static void
 modest_store_widget_finalize (GObject *obj)
 {
+       ModestStoreWidgetPrivate *priv = MODEST_STORE_WIDGET_GET_PRIVATE(obj);
+       
+       /* These had to stay alive for as long as the comboboxes that used them: */
+       modest_pair_list_free (priv->security_protos);
+       modest_pair_list_free (priv->transport_store_protos);
+       
        G_OBJECT_CLASS(parent_class)->finalize (obj);
 }