[nautilus-actions] A valid menu has at least one valid subitem



commit 96ddd0e04f0f4849fe707f0d82c5e9da6dd4e69b
Author: Pierre Wieser <pwieser trychlos org>
Date:   Mon Oct 12 07:02:49 2009 +0200

    A valid menu has at least one valid subitem

 ChangeLog                    |    3 +++
 src/runtime/na-object-menu.c |   15 +++++++++++++++
 2 files changed, 18 insertions(+), 0 deletions(-)
---
diff --git a/ChangeLog b/ChangeLog
index f85f94f..cc3b482 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -3,6 +3,9 @@
 	* src/nact/nact-tree-model.c (drop_inside):
 	Adjust the dest when moving items down.
 
+	* src/runtime/na-object-menu.c (object_is_valid):
+	A valid menu has at least one valid subitem.
+
 2009-10-11 Pierre Wieser <pwieser trychlos org>
 
 	* src/nact/nact-iactions-list.c (do_insert_into_first):
diff --git a/src/runtime/na-object-menu.c b/src/runtime/na-object-menu.c
index 1151550..6e838ab 100644
--- a/src/runtime/na-object-menu.c
+++ b/src/runtime/na-object-menu.c
@@ -328,12 +328,16 @@ object_are_equal( const NAObject *a, const NAObject *b )
 /*
  * a valid NAObjectMenu requires a not null, not empty label
  * this is checked here as NAObject doesn't have this condition
+ *
+ * also, a valid menu has at least one valid child
  */
 static gboolean
 object_is_valid( const NAObject *menu )
 {
 	gchar *label;
 	gboolean is_valid = TRUE;
+	gint valid_subitems;
+	GList *subitems, *ip;
 
 	g_return_val_if_fail( NA_IS_OBJECT_MENU( menu ), FALSE );
 
@@ -344,6 +348,17 @@ object_is_valid( const NAObject *menu )
 			is_valid = ( label && g_utf8_strlen( label, -1 ) > 0 );
 			g_free( label );
 		}
+
+		if( is_valid ){
+			valid_subitems = 0;
+			subitems = na_object_get_items_list( menu );
+			for( ip = subitems ; ip ; ip = ip->next ){
+				if( na_iduplicable_is_valid( ip->data )){
+					valid_subitems += 1;
+				}
+			}
+			is_valid = ( valid_subitems > 0 );
+		}
 	}
 
 	return( is_valid );



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