diff --git a/gnome/ChangeLog b/gnome/ChangeLog
index 830562e02..612179321 100644
--- a/gnome/ChangeLog
+++ b/gnome/ChangeLog
@@ -1,3 +1,10 @@
+1999-01-24  Miguel de Icaza  <miguel@nuclecu.unam.mx>
+
+	* gtkdtree.c (gtk_dtree_load_path): Keep track of when we are
+	loading the tree (and thus we do not care about async
+	notifications to the tree state changes) and when we are done (and
+	thus, we care about the async treestore structure notifications). 
+
 1999-01-23  Miguel de Icaza  <miguel@nuclecu.unam.mx>
 
 	* gcmd.c (ep_add_callback): Set Window's position to
diff --git a/gnome/gtkdtree.c b/gnome/gtkdtree.c
index 71aa0d401..f2356307e 100644
--- a/gnome/gtkdtree.c
+++ b/gnome/gtkdtree.c
@@ -127,9 +127,12 @@ gtk_dtree_load_path (GtkDTree *dtree, char *path, GtkCTreeNode *parent, int leve
 	g_assert (parent);
 	g_assert (dtree);
 
+	dtree->loading_dir++;
 	dir = tree_store_opendir (path);
-	if (!dir)
+	if (!dir){
+		dtree->loading_dir--;
 		return FALSE;
+	}
 
 	for (; (dirent = tree_store_readdir (dir)) != NULL; ){
 		GtkCTreeNode *sibling;
@@ -151,7 +154,8 @@ gtk_dtree_load_path (GtkDTree *dtree, char *path, GtkCTreeNode *parent, int leve
 	}
 
 	tree_store_closedir (dir);
-
+	dtree->loading_dir--;
+	
 	return TRUE;
 }
 
@@ -375,6 +379,9 @@ entry_removed_callback (tree_entry *tree, void *data)
 	GtkDTree *dtree = data;
 	char *dirname, *copy, *current ;
 
+	if (dtree->loading_dir)
+		return;
+	
 	copy = dirname = g_strdup (tree->name);
 	copy++;
 	current_node = dtree->root_node;
@@ -403,6 +410,9 @@ entry_added_callback (tree_entry *tree, void *data)
 	GtkDTree *dtree = data;
 	char *dirname, *copy, *current, *npath, *full_path;
 
+	if (dtree->loading_dir)
+		return;
+	
 	copy = dirname = g_strdup (tree->name);
 	copy++;
 	current_node = dtree->root_node;
diff --git a/gnome/gtkdtree.h b/gnome/gtkdtree.h
index c8a9fc47c..a206d77ab 100644
--- a/gnome/gtkdtree.h
+++ b/gnome/gtkdtree.h
@@ -31,7 +31,8 @@ typedef struct {
 	GdkBitmap *bitmap_open;
 	GdkBitmap *bitmap_close;
 
-	int internal;
+	unsigned short internal;
+	unsigned short loading_dir;
 	int *show_dot_files;
 } GtkDTree;