[anjuta/newproject] am: Fix removing and adding modules



commit bed225e6d0b8024908612cbb7bdffe13e8ccb157
Author: Sébastien Granjoux <seb sfo free fr>
Date:   Sun Nov 14 21:47:16 2010 +0100

    am: Fix removing and adding modules

 libanjuta/anjuta-token.c        |    4 +++-
 plugins/am-project/ac-writer.c  |   20 +++++++++++++++++---
 plugins/am-project/am-node.c    |   10 ++++++++--
 plugins/am-project/am-project.c |    1 -
 4 files changed, 28 insertions(+), 7 deletions(-)
---
diff --git a/libanjuta/anjuta-token.c b/libanjuta/anjuta-token.c
index b11cd9a..868eeb9 100644
--- a/libanjuta/anjuta-token.c
+++ b/libanjuta/anjuta-token.c
@@ -1527,6 +1527,7 @@ AnjutaToken*
 anjuta_token_free_children (AnjutaToken *token)
 {
 	AnjutaToken *child;
+	AnjutaToken *last;
 	
 	if (token == NULL) return NULL;
 
@@ -1538,10 +1539,11 @@ anjuta_token_free_children (AnjutaToken *token)
 	
 	if (token->last != NULL)
 	{
+		last = token->last;
 		for (child = anjuta_token_next (token); child != NULL; child = anjuta_token_next (token))
 		{
 			anjuta_token_free (child);
-			if (child == token->last) break;
+			if (child == last) break;
 		}
 	}
 	token->last = NULL;
diff --git a/plugins/am-project/ac-writer.c b/plugins/am-project/ac-writer.c
index f2fe322..e0a15e6 100644
--- a/plugins/am-project/ac-writer.c
+++ b/plugins/am-project/ac-writer.c
@@ -264,6 +264,7 @@ amp_module_create_token (AmpProject  *project, AnjutaAmModuleNode *module, GErro
 	gboolean after;
 	AnjutaToken *token;
 	AnjutaToken *prev;
+	AnjutaToken *next;
 	AnjutaProjectNode *sibling;
 
 	/* Get root node */
@@ -280,7 +281,11 @@ amp_module_create_token (AmpProject  *project, AnjutaAmModuleNode *module, GErro
 		if (anjuta_project_node_get_node_type (sibling) == ANJUTA_PROJECT_MODULE)
 		{
 			prev = amp_module_get_token (ANJUTA_AM_MODULE_NODE (sibling));
-			if (prev != NULL) break;
+			if (prev != NULL)
+			{
+				prev = anjuta_token_list (prev);
+				break;
+			}
 		}
 	}
 	if (prev == NULL)
@@ -291,12 +296,21 @@ amp_module_create_token (AmpProject  *project, AnjutaAmModuleNode *module, GErro
 			if (anjuta_project_node_get_node_type (sibling) == ANJUTA_PROJECT_MODULE)
 			{
 				prev = amp_module_get_token (ANJUTA_AM_MODULE_NODE (sibling));
-				if (prev != NULL) break;
+				if (prev != NULL)
+				{
+					prev = anjuta_token_list (prev);
+					break;
+				}
 			}
 		}
 	}
-
+	
 	token = amp_project_write_module_list (root, anjuta_project_node_get_name (ANJUTA_PROJECT_NODE (module)), after, prev);
+	next = anjuta_token_next (token);
+	next = anjuta_token_next (next);
+	next = anjuta_token_next (next);
+	amp_module_add_token (module, next);
+	
 	amp_root_update_configure (root, token);
 
 	return TRUE;
diff --git a/plugins/am-project/am-node.c b/plugins/am-project/am-node.c
index 16ff677..a24f515 100644
--- a/plugins/am-project/am-node.c
+++ b/plugins/am-project/am-node.c
@@ -382,9 +382,15 @@ anjuta_am_root_node_class_init (AnjutaAmRootNodeClass *klass)
 void
 amp_module_add_token (AnjutaAmModuleNode *module, AnjutaToken *token)
 {
+	gchar *name;
+	
 	module->module = token;
-	g_free (module->base.name);
-	module->base.name = anjuta_token_evaluate (anjuta_token_first_item (token));
+	name = anjuta_token_evaluate (anjuta_token_first_item (token));
+	if (name != NULL)
+	{
+		g_free (module->base.name);
+		module->base.name = name;
+	}
 }
 
 AnjutaToken *
diff --git a/plugins/am-project/am-project.c b/plugins/am-project/am-project.c
index 5d984d8..c74cc42 100644
--- a/plugins/am-project/am-project.c
+++ b/plugins/am-project/am-project.c
@@ -757,7 +757,6 @@ amp_project_load_module (AmpProject *project, AnjutaToken *module_token)
 		AnjutaAmPackageNode *package;
 		gchar *compare;
 
-
 		/* Module name */
 		arg = anjuta_token_first_item (module_token);
 		value = anjuta_token_evaluate (arg);



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]