Index: gconf-editor-3.0.1/src/gconf-editor-window.c
===================================================================
--- gconf-editor-3.0.1.orig/src/gconf-editor-window.c	2012-02-27 10:31:42.161675862 +0100
+++ gconf-editor-3.0.1/src/gconf-editor-window.c	2012-02-27 10:31:42.181675863 +0100
@@ -859,59 +859,6 @@
 	}
 }
 
-static void
-gconf_editor_window_selection_changed (GtkTreeSelection *selection, GConfEditorWindow *window)
-{
-	GtkTreeIter iter;
-	gchar *base_title;
-
-	switch (window->type) {
-	case GCONF_EDITOR_WINDOW_TYPE_DEFAULTS:
-		base_title = _("Configuration Editor (Default settings)");
-		break;
-	case GCONF_EDITOR_WINDOW_TYPE_MANDATORY:
-		base_title = _("Configuration Editor (Mandatory settings)");
-		break;
-	default:
-		base_title = _("Configuration Editor");
-	}
-		
-	if (selection == NULL)
-		gtk_window_set_title (GTK_WINDOW (window), base_title);
-	else {
-		gchar *name, *title, *path;
-		GtkTreeIter child_iter;
-
-		if (!gtk_tree_selection_get_selected (selection, NULL, &iter)) {
-			gtk_window_set_title (GTK_WINDOW (window), base_title);
-			return;
-		}
-
-		gtk_tree_model_sort_convert_iter_to_child_iter (GTK_TREE_MODEL_SORT (window->sorted_tree_model), &child_iter, &iter);
-
-		name = gconf_tree_model_get_gconf_name (GCONF_TREE_MODEL (window->tree_model), &child_iter);
-
-		if (strlen (name) > 0) {
-			title = g_strdup_printf ("%s - %s", base_title, name);
-		}
-		else {
-			title = g_strdup (base_title);
-		}
-		
-		gtk_window_set_title (GTK_WINDOW (window), title);
-		g_free (title);
-		g_free (name);
-
-		path = gconf_tree_model_get_gconf_path (GCONF_TREE_MODEL (window->tree_model), &child_iter);
-		gtk_statusbar_pop (GTK_STATUSBAR (window->statusbar), 0);
-		gtk_statusbar_push (GTK_STATUSBAR (window->statusbar), 0, path);
-
-		gconf_list_model_set_root_path (GCONF_LIST_MODEL (window->list_model), path);
-
-		g_free (path);
-	}
-}
-
 static gboolean
 list_view_button_press_event (GtkTreeView *tree_view, GdkEventButton *event, GConfEditorWindow *window)
 {
@@ -1193,6 +1140,65 @@
 	g_free (path);
 }
 
+
+static void
+gconf_editor_window_selection_changed (GtkTreeSelection *selection, GConfEditorWindow *window)
+{
+	GtkTreeIter iter;
+	gchar *base_title;
+
+	switch (window->type) {
+	case GCONF_EDITOR_WINDOW_TYPE_DEFAULTS:
+		base_title = _("Configuration Editor (Default settings)");
+		break;
+	case GCONF_EDITOR_WINDOW_TYPE_MANDATORY:
+		base_title = _("Configuration Editor (Mandatory settings)");
+		break;
+	default:
+		base_title = _("Configuration Editor");
+	}
+		
+	if (selection == NULL)
+		gtk_window_set_title (GTK_WINDOW (window), base_title);
+	else {
+		gchar *name, *title, *path;
+		GtkTreeIter child_iter;
+
+		if (!gtk_tree_selection_get_selected (selection, NULL, &iter)) {
+			gtk_window_set_title (GTK_WINDOW (window), base_title);
+			return;
+		}
+
+		gtk_tree_model_sort_convert_iter_to_child_iter (GTK_TREE_MODEL_SORT (window->sorted_tree_model), &child_iter, &iter);
+
+		name = gconf_tree_model_get_gconf_name (GCONF_TREE_MODEL (window->tree_model), &child_iter);
+
+		if (strlen (name) > 0) {
+			title = g_strdup_printf ("%s - %s", base_title, name);
+		}
+		else {
+			title = g_strdup (base_title);
+		}
+		
+		gtk_window_set_title (GTK_WINDOW (window), title);
+		g_free (title);
+		g_free (name);
+
+		path = gconf_tree_model_get_gconf_path (GCONF_TREE_MODEL (window->tree_model), &child_iter);
+		gtk_statusbar_pop (GTK_STATUSBAR (window->statusbar), 0);
+		gtk_statusbar_push (GTK_STATUSBAR (window->statusbar), 0, path);
+
+		/* block changed signal while the model is being updated */
+		g_signal_handlers_block_by_func (gtk_tree_view_get_selection (GTK_TREE_VIEW (window->list_view)),G_CALLBACK (gconf_editor_window_update_list_selection), window);
+        
+		gconf_list_model_set_root_path (GCONF_LIST_MODEL (window->list_model), path);
+
+		g_signal_handlers_unblock_by_func (gtk_tree_view_get_selection (GTK_TREE_VIEW (window->list_view)),G_CALLBACK (gconf_editor_window_update_list_selection), window);
+
+		g_free (path);
+	}
+}
+
 static void
 gconf_editor_window_have_tearoffs_notify (GConfClient       *client,
 					  guint              cnxn_id,
