[nautilus-actions] Fix profiles list allocation



commit 20e317b19ae89bbf3758631d7cffd627a6fa08d5
Author: Pierre Wieser <pwieser trychlos org>
Date:   Thu May 28 17:56:12 2009 +0200

    Fix profiles list allocation
---
 ChangeLog                 |    9 +++++++++
 plugin/nautilus-actions.c |   14 +++++++++++---
 2 files changed, 20 insertions(+), 3 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 5d13006..215012b 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2009-05-28 Pierre Wieser <pwieser trychlos org>
+
+	* plugin/nautilus-actions.c (nautilus_actions_get_file_items):
+	Fix iteration through profiles list.
+	Do not search through actions when the Nautilus-provided list is empty.
+
+	* plugin/nautilus-actions.c (get_hash_keys):
+	Remove no more used function.
+
 2009-05-25 Pierre Wieser <pwieser trychlos org>
 
 	* configure.ac:
diff --git a/plugin/nautilus-actions.c b/plugin/nautilus-actions.c
index 181a5c7..0493708 100644
--- a/plugin/nautilus-actions.c
+++ b/plugin/nautilus-actions.c
@@ -143,10 +143,10 @@ static NautilusMenuItem *nautilus_actions_create_menu_item (NautilusActionsConfi
 	return item;
 }
 
-static void get_hash_keys (gchar* key, gchar* value, GSList** list)
+/*static void get_hash_keys (gchar* key, gchar* value, GSList** list)
 {
 	*list = g_slist_append (*list, key);
-}
+}*/
 
 static GList *nautilus_actions_get_file_items (NautilusMenuProvider *provider, GtkWidget *window, GList *files)
 {
@@ -164,6 +164,11 @@ static GList *nautilus_actions_get_file_items (NautilusMenuProvider *provider, G
 
 	g_return_val_if_fail (NAUTILUS_IS_ACTIONS (self), NULL);
 
+	/* no need to go further if there is no files in the list */
+	if( !g_list_length( files )){
+		return(( GList * ) NULL );
+	}
+
 	if (!self->dispose_has_run)
 	{
 		for (iter = self->config_list; iter; iter = iter->next)
@@ -172,7 +177,8 @@ static GList *nautilus_actions_get_file_items (NautilusMenuProvider *provider, G
 			NautilusActionsConfigAction *action = (NautilusActionsConfigAction*)iter->data;
 
 			/* Retrieve all profile name */
-			g_hash_table_foreach (action->profiles, (GHFunc)get_hash_keys, &profile_list);
+			/*g_hash_table_foreach (action->profiles, (GHFunc)get_hash_keys, &profile_list);*/
+			profile_list = nautilus_actions_config_action_get_all_profile_names( action );
 
 			iter2 = profile_list;
 			found = FALSE;
@@ -180,6 +186,7 @@ static GList *nautilus_actions_get_file_items (NautilusMenuProvider *provider, G
 			{
 				profile_name = (gchar*)iter2->data;
 				NautilusActionsConfigActionProfile* action_profile = nautilus_actions_config_action_get_profile (action, profile_name);
+				g_debug( "%s: profile='%s' (%p)", thisfn, profile_name, action_profile );
 
 				if (nautilus_actions_test_validate (action_profile, files))
 				{
@@ -190,6 +197,7 @@ static GList *nautilus_actions_get_file_items (NautilusMenuProvider *provider, G
 
 				iter2 = iter2->next;
 			}
+			nautilus_actions_config_action_free_all_profile_names( profile_list );
 		}
 	}
 



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