Commit: 117d304a90aca119faaa7b5db9f8d4bfc8391093 Author: Joshua Leung Date: Tue Jul 10 00:20:19 2018 +1200 Branches: greasepencil-object https://developer.blender.org/rB117d304a90aca119faaa7b5db9f8d4bfc8391093
Tweaks to GPENCIL_OT_new operator * Correctly tag Annotation datablocks as such when adding them * Add new layer by default. It saves users from having to manually add one after adding the datablock anyway. =================================================================== M source/blender/editors/gpencil/gpencil_data.c =================================================================== diff --git a/source/blender/editors/gpencil/gpencil_data.c b/source/blender/editors/gpencil/gpencil_data.c index 029e2eeaabd..0459e48792e 100644 --- a/source/blender/editors/gpencil/gpencil_data.c +++ b/source/blender/editors/gpencil/gpencil_data.c @@ -103,7 +103,9 @@ /* add new datablock - wrapper around API */ static int gp_data_add_exec(bContext *C, wmOperator *op) { - bGPdata **gpd_ptr = ED_gpencil_data_get_pointers(C, NULL); + PointerRNA gpd_owner = {{NULL}}; + bGPdata **gpd_ptr = ED_gpencil_data_get_pointers(C, &gpd_owner); + bool is_annotation = ED_gpencil_data_owner_is_annotation(&gpd_owner); if (gpd_ptr == NULL) { BKE_report(op->reports, RPT_ERROR, "Nowhere for grease pencil data to go"); @@ -113,13 +115,35 @@ static int gp_data_add_exec(bContext *C, wmOperator *op) /* decrement user count and add new datablock */ /* TODO: if a datablock exists, we should make a copy of it instead of starting fresh (as in other areas) */ Main *bmain = CTX_data_main(C); - bGPdata *gpd = (*gpd_ptr); + bGPdata *gpd; + + /* decrement user count of old GP datablock */ + if (*gpd_ptr) { + gpd = (*gpd_ptr); + id_us_min(&gpd->id); + } + + /* add new datablock, with a single layer ready to use (so users don't have to perform an extra step) */ + if (is_annotation) { + bGPdata *gpd = BKE_gpencil_data_addnew(bmain, DATA_("Notes")); + *gpd_ptr = gpd; + + /* tag for annotations */ + gpd->flag |= GP_DATA_ANNOTATIONS; - id_us_min((ID *)gpd); - *gpd_ptr = BKE_gpencil_data_addnew(bmain, DATA_("GPencil")); + /* add new layer (i.e. a "note") */ + BKE_gpencil_layer_addnew(*gpd_ptr, DATA_("Note"), true); + } + else { + /* GP Object Case - This shouldn't happen! */ + *gpd_ptr = BKE_gpencil_data_addnew(bmain, DATA_("GPencil")); - /* add default sets of colors and brushes */ - ED_gpencil_add_defaults(C); + /* add default sets of colors and brushes */ + ED_gpencil_add_defaults(C); + + /* add new layer */ + BKE_gpencil_layer_addnew(*gpd_ptr, DATA_("GP_Layer"), true); + } } /* notifiers */ @@ -200,16 +224,13 @@ static int gp_layer_add_exec(bContext *C, wmOperator *op) { PointerRNA gpd_owner = {{NULL}}; bGPdata **gpd_ptr = ED_gpencil_data_get_pointers(C, &gpd_owner); - bool is_annotation = false; + bool is_annotation = ED_gpencil_data_owner_is_annotation(&gpd_owner); /* if there's no existing Grease-Pencil data there, add some */ if (gpd_ptr == NULL) { BKE_report(op->reports, RPT_ERROR, "Nowhere for grease pencil data to go"); return OPERATOR_CANCELLED; } - else { - is_annotation = ED_gpencil_data_owner_is_annotation(&gpd_owner); - } if (*gpd_ptr == NULL) { Main *bmain = CTX_data_main(C); _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs