[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [57211] trunk/blender/source/blender: fix [#35501] Operator log: some property changes log as [...].(null) = ...

Campbell Barton ideasman42 at gmail.com
Mon Jun 3 02:46:21 CEST 2013


Revision: 57211
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=57211
Author:   campbellbarton
Date:     2013-06-03 00:46:20 +0000 (Mon, 03 Jun 2013)
Log Message:
-----------
fix [#35501] Operator log: some property changes log as [...].(null) = ...

Modified Paths:
--------------
    trunk/blender/source/blender/makesrna/intern/rna_access.c
    trunk/blender/source/blender/windowmanager/intern/wm_operators.c

Modified: trunk/blender/source/blender/makesrna/intern/rna_access.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_access.c	2013-06-02 23:58:53 UTC (rev 57210)
+++ trunk/blender/source/blender/makesrna/intern/rna_access.c	2013-06-03 00:46:20 UTC (rev 57211)
@@ -4469,6 +4469,16 @@
 
 	data_path = RNA_path_from_ID_to_property(ptr, prop);
 
+	if (data_path == NULL) {
+		/* this may not be an ID at all, check for simple when pointer owns property.
+		 * TODO, more complex nested case */
+		if (!RNA_struct_is_ID(ptr->type)) {
+			if (RNA_struct_find_property(ptr, RNA_property_identifier(prop)) == prop) {
+				data_path = BLI_strdup(RNA_property_identifier(prop));
+			}
+		}
+	}
+
 	if ((index == -1) || (RNA_property_array_check(prop) == FALSE)) {
 		ret = BLI_sprintfN("%s",
 		                   data_path);

Modified: trunk/blender/source/blender/windowmanager/intern/wm_operators.c
===================================================================
--- trunk/blender/source/blender/windowmanager/intern/wm_operators.c	2013-06-02 23:58:53 UTC (rev 57210)
+++ trunk/blender/source/blender/windowmanager/intern/wm_operators.c	2013-06-03 00:46:20 UTC (rev 57211)
@@ -648,7 +648,6 @@
 	char *ret = NULL;
 
 	if (ptr->id.data) {
-		ID *idptr = ptr->id.data;
 
 #define CTX_TEST_PTR_ID(C, member, idptr) \
 		{ \
@@ -671,7 +670,16 @@
 			} \
 		} (void)0
 
-		switch (GS(idptr->name)) {
+#define CTX_TEST_PTR_DATA_TYPE(C, member, rna_type, rna_ptr, dataptr_cmp) \
+		{ \
+			const char *ctx_member = member; \
+			if (RNA_struct_is_a((ptr)->type, &(rna_type)) && (ptr)->data == (dataptr_cmp)) { \
+				member_id = ctx_member; \
+				break; \
+			} \
+		} (void)0
+
+		switch (GS(((ID *)ptr->id.data)->name)) {
 			case ID_SCE:
 			{
 				CTX_TEST_PTR_ID(C, "scene", ptr->id.data);
@@ -707,6 +715,11 @@
 			case ID_SCR:
 			{
 				CTX_TEST_PTR_ID(C, "screen", ptr->id.data);
+
+				CTX_TEST_PTR_DATA_TYPE(C, "space_data", RNA_Space, ptr, CTX_wm_space_data(C));
+				CTX_TEST_PTR_DATA_TYPE(C, "area", RNA_Area, ptr, CTX_wm_area(C));
+				CTX_TEST_PTR_DATA_TYPE(C, "region", RNA_Region, ptr, CTX_wm_region(C));
+
 				break;
 			}
 		}




More information about the Bf-blender-cvs mailing list