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

Reply via email to