[nautilus-actions] na_factory_object_copy(): do not override provider data
- From: Pierre Wieser <pwieser src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [nautilus-actions] na_factory_object_copy(): do not override provider data
- Date: Tue, 17 Jan 2012 21:54:39 +0000 (UTC)
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]