[Bf-blender-cvs] [c39e9e3] GPencil_EditStrokes: Added "gpencil_data_owner" to context for getting the struct/datablock which references the "gpencil_data" instance

Joshua Leung noreply at git.blender.org
Sun Oct 12 13:53:58 CEST 2014


Commit: c39e9e353491f80a2fe880119734bbcf176360dd
Author: Joshua Leung
Date:   Sun Oct 12 18:50:15 2014 +1300
Branches: GPencil_EditStrokes
https://developer.blender.org/rBc39e9e353491f80a2fe880119734bbcf176360dd

Added "gpencil_data_owner" to context for getting the struct/datablock which references the "gpencil_data" instance

===================================================================

M	source/blender/editors/screen/screen_context.c

===================================================================

diff --git a/source/blender/editors/screen/screen_context.c b/source/blender/editors/screen/screen_context.c
index a52a37b..4f86489 100644
--- a/source/blender/editors/screen/screen_context.c
+++ b/source/blender/editors/screen/screen_context.c
@@ -69,8 +69,9 @@ const char *screen_context_dir[] = {
 	"sculpt_object", "vertex_paint_object", "weight_paint_object",
 	"image_paint_object", "particle_edit_object",
 	"sequences", "selected_sequences", "selected_editable_sequences", /* sequencer */
-	"gpencil_data", "active_gpencil_layer", "active_gpencil_frame", /* grease pencil data */
+	"gpencil_data", "gpencil_data_owner", /* grease pencil data */
 	"visible_gpencil_layers", "editable_gpencil_layers", "editable_gpencil_strokes",
+	"active_gpencil_layer", "active_gpencil_frame",
 	"active_operator",
 	NULL};
 
@@ -410,6 +411,21 @@ int ed_screen_context(const bContext *C, const char *member, bContextDataResult
 			return 1;
 		}
 	}
+	else if (CTX_data_equals(member, "gpencil_data_owner")) {
+		/* pointer to which data/datablock owns the reference to the Grease Pencil data being used (as gpencil_data)
+		 * XXX: see comment for gpencil_data case... 
+		 */
+		bGPdata **gpd_ptr = NULL;
+		PointerRNA ptr;
+		
+		/* get pointer to Grease Pencil Data */
+		gpd_ptr = ED_gpencil_data_get_pointers_direct((ID *)sc, scene, sa, obact, &ptr);
+		
+		if (gpd_ptr) {
+			CTX_data_pointer_set(result, ptr.id.data, ptr.type, ptr.data);
+			return 1;
+		}
+	}
 	else if (CTX_data_equals(member, "active_gpencil_layer")) {
 		/* XXX: see comment for gpencil_data case... */
 		bGPdata *gpd = ED_gpencil_data_get_active_direct((ID *)sc, scene, sa, obact);




More information about the Bf-blender-cvs mailing list