[nautilus-actions] na_factory_object_copy(): do not override provider data



commit 89e5ec24923d5c6d5bd98102a1ce5d9218550907
Author: Pierre Wieser <pwieser trychlos org>
Date:   Tue Jan 17 22:54:02 2012 +0100

    na_factory_object_copy(): do not override provider data

 ChangeLog                         |    5 +++++
 src/core/na-factory-object.c      |    8 ++++++++
 src/core/na-object-item-factory.c |    3 +--
 3 files changed, 14 insertions(+), 2 deletions(-)
---
diff --git a/ChangeLog b/ChangeLog
index 0460b72..3081778 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,10 @@
 2012-01-17 Pierre Wieser <pwieser trychlos org>
 
+	* src/core/na-object-item-factory.c: Reset provider as copyable.
+
+	* src/core/na-factory-object.c (na_factory_object_copy):
+	Takes care of not overriding target provider data.
+
 	nact_match_list functions connect to base signals (and acts as a
 	pseudo-interface).
 
diff --git a/src/core/na-factory-object.c b/src/core/na-factory-object.c
index 955ec9d..9aea490 100644
--- a/src/core/na-factory-object.c
+++ b/src/core/na-factory-object.c
@@ -352,6 +352,7 @@ na_factory_object_move_boxed( NAIFactoryObject *target, const NAIFactoryObject *
  * @source: the source #NAIFactoryObject instance.
  *
  * Copies one instance to another.
+ * Takes care of not overriding provider data.
  */
 void
 na_factory_object_copy( NAIFactoryObject *target, const NAIFactoryObject *source )
@@ -361,6 +362,7 @@ na_factory_object_copy( NAIFactoryObject *target, const NAIFactoryObject *source
 	GList *src_list, *isrc;
 	NADataBoxed *boxed;
 	const NADataDef *def;
+	void *provider, *provider_data;
 
 	g_return_if_fail( NA_IS_IFACTORY_OBJECT( target ));
 	g_return_if_fail( NA_IS_IFACTORY_OBJECT( source ));
@@ -372,6 +374,9 @@ na_factory_object_copy( NAIFactoryObject *target, const NAIFactoryObject *source
 
 	/* first remove copyable data from target
 	 */
+	provider = na_object_get_provider( target );
+	provider_data = na_object_get_provider_data( target );
+
 	idest = dest_list = g_object_get_data( G_OBJECT( target ), NA_IFACTORY_OBJECT_PROP_DATA );
 	while( idest ){
 		boxed = NA_DATA_BOXED( idest->data );
@@ -401,6 +406,9 @@ na_factory_object_copy( NAIFactoryObject *target, const NAIFactoryObject *source
 		}
 	}
 
+	na_object_set_provider( target, provider );
+	na_object_set_provider_data( target, provider_data );
+
 	v_copy( target, source );
 }
 
diff --git a/src/core/na-object-item-factory.c b/src/core/na-object-item-factory.c
index 00f2d6f..a327113 100644
--- a/src/core/na-object-item-factory.c
+++ b/src/core/na-object-item-factory.c
@@ -44,7 +44,6 @@
  * - non localized icon name
  * - subitems pointers list and string list
  * - read-only status
- * - provider and provider data
  */
 
 NADataDef data_def_item [] = {
@@ -353,7 +352,7 @@ NADataDef data_def_item [] = {
 				NA_DATA_TYPE_POINTER,
 				NULL,
 				FALSE,
-				FALSE,
+				TRUE,
 				FALSE,
 				FALSE,
 				FALSE,



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