diff --git a/properties/auth-helpers.c b/properties/auth-helpers.c
index ba6b0fe..f4d4887 100644
--- a/properties/auth-helpers.c
+++ b/properties/auth-helpers.c
@@ -43,6 +43,8 @@
 #include "common-gnome/keyring-helpers.h"
 #include "common/utils.h"
 
+char *current_folder;
+
 static void
 show_password (GtkToggleButton *togglebutton, GtkEntry *password_entry)
 {
@@ -172,6 +174,30 @@ tls_cert_changed_cb (GtkWidget *widget, GtkWidget *next_widget)
 	g_free (next_fname);
 }
 
+static void
+tls_cert_folder_changed_cb (GtkWidget *widget, GtkWidget *next_widget)
+{
+	char *tmp,*next_fname,*fname;
+	fname = gtk_file_chooser_get_filename ( GTK_FILE_CHOOSER(widget));
+	
+	if (fname) 
+		current_folder = gtk_file_chooser_get_current_folder (GTK_FILE_CHOOSER(widget));
+
+	tmp = gtk_file_chooser_get_current_folder (GTK_FILE_CHOOSER(next_widget));
+	next_fname = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER(next_widget));
+
+	if (tmp && current_folder && strcmp(tmp,current_folder) && (next_fname==NULL)) {
+		g_signal_handlers_block_by_func (G_OBJECT(next_widget),G_CALLBACK(tls_cert_changed_cb),NULL);
+		gtk_file_chooser_set_current_folder (GTK_FILE_CHOOSER(next_widget),current_folder);
+		g_signal_handlers_unblock_by_func (G_OBJECT(next_widget),G_CALLBACK(tls_cert_changed_cb),NULL);
+	}
+
+	g_free (tmp);
+	g_free (fname);
+	g_free (next_fname);
+}
+
+
 void
 tls_pw_init_auth_widget (GladeXML *xml,
                          GtkSizeGroup *group,
@@ -254,6 +280,13 @@ tls_pw_init_auth_widget (GladeXML *xml,
 		g_signal_connect (ca, "selection-changed", G_CALLBACK (tls_cert_changed_cb), cert);
 		g_signal_connect (cert, "selection-changed", G_CALLBACK (tls_cert_changed_cb), key);
 		g_signal_connect (key, "selection-changed", G_CALLBACK (tls_cert_changed_cb), ca);
+		
+		/* Link choosers to the current dir state callback */
+		/* Note the order used here is same as the one which appears in the gui */
+		g_signal_connect (cert, "current-folder-changed", G_CALLBACK(tls_cert_folder_changed_cb),ca);
+		g_signal_connect (ca, "current-folder-changed", G_CALLBACK(tls_cert_folder_changed_cb),key);
+		g_signal_connect (key, "current-folder-changed", G_CALLBACK(tls_cert_folder_changed_cb),cert);
+		
 	}
 
 	if (!strcmp (contype, NM_OPENVPN_CONTYPE_PASSWORD) || !strcmp (contype, NM_OPENVPN_CONTYPE_PASSWORD_TLS)) {
