[Bf-blender-cvs] [2b9ca08276d] greasepencil-refactor: GPencil: Replace Add mask with popover menu

Antonio Vazquez noreply at git.blender.org
Tue Feb 11 16:47:42 CET 2020


Commit: 2b9ca08276d6645ffdd18942382884397b901546
Author: Antonio Vazquez
Date:   Tue Feb 11 16:43:45 2020 +0100
Branches: greasepencil-refactor
https://developer.blender.org/rB2b9ca08276d6645ffdd18942382884397b901546

GPencil: Replace Add mask with popover menu

Also removed iinternal property used.

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

M	release/scripts/startup/bl_ui/properties_grease_pencil_common.py
M	source/blender/makesdna/DNA_gpencil_types.h
M	source/blender/makesrna/intern/rna_gpencil.c

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

diff --git a/release/scripts/startup/bl_ui/properties_grease_pencil_common.py b/release/scripts/startup/bl_ui/properties_grease_pencil_common.py
index 92c7b2bdc4a..1f26242149a 100644
--- a/release/scripts/startup/bl_ui/properties_grease_pencil_common.py
+++ b/release/scripts/startup/bl_ui/properties_grease_pencil_common.py
@@ -784,6 +784,24 @@ class GPENCIL_UL_masks(UIList):
             layout.prop(mask, "name", text="", emboss=False, icon_value=icon)
 
 
+class GPENCIL_MT_layer_mask_menu(Menu):
+    bl_label = "Layer Specials"
+
+    def draw(self, context):
+        layout = self.layout
+        ob = context.object
+        gpd = ob.data
+        gpl_active = gpd.layers.active
+        done = False
+        for gpl in gpd.layers:
+            if gpl != gpl_active and gpl.info not in gpl_active.mask_layers:
+                done = True
+                layout.operator("gpencil.layer_mask_add", text=gpl.info).name=gpl.info
+
+        if done is False:
+            layout.label(text="No layers to add")
+
+
 class GreasePencilLayerMasksPanel:
     def draw_header(self, context):
         ob = context.active_object
@@ -801,11 +819,6 @@ class GreasePencilLayerMasksPanel:
         layout.enabled = gpl.use_mask_layer
 
         if gpl:
-            row = layout.row(align=True)
-            row.prop(gpd, "layer_list", text="Layer")
-            layer_name = gpd.layer_list
-            row.operator("gpencil.layer_mask_add", icon="ADD", text="").name=layer_name
-
             rows = 4
             row = layout.row()
             col = row.column()
@@ -813,6 +826,7 @@ class GreasePencilLayerMasksPanel:
                             "active_mask_index", rows=rows, sort_lock=True)
 
             col2 = row.column(align=True)
+            col2.menu("GPENCIL_MT_layer_mask_menu", icon='ADD', text="")
             col2.operator("gpencil.layer_mask_remove", icon='REMOVE', text="")
 
 
@@ -899,6 +913,7 @@ classes = (
     GPENCIL_MT_move_to_layer,
 
     GPENCIL_MT_gpencil_draw_delete,
+    GPENCIL_MT_layer_mask_menu,
 
     GPENCIL_UL_annotation_layer,
     GPENCIL_UL_layer,
diff --git a/source/blender/makesdna/DNA_gpencil_types.h b/source/blender/makesdna/DNA_gpencil_types.h
index 58b42e5fc39..4b118c5359a 100644
--- a/source/blender/makesdna/DNA_gpencil_types.h
+++ b/source/blender/makesdna/DNA_gpencil_types.h
@@ -491,8 +491,7 @@ typedef struct bGPdata_Runtime {
   /** Temp stroke used for drawing. */
   struct bGPDstroke *sbuffer_gps;
 
-  /* Index for dynamic layer list. */
-  short layer_idx;
+  char _pad[2];
   /** Material index of the stroke. */
   short matid;
 
diff --git a/source/blender/makesrna/intern/rna_gpencil.c b/source/blender/makesrna/intern/rna_gpencil.c
index 4af325079b1..b937da93f15 100644
--- a/source/blender/makesrna/intern/rna_gpencil.c
+++ b/source/blender/makesrna/intern/rna_gpencil.c
@@ -404,18 +404,6 @@ static void rna_GPencil_active_layer_set(PointerRNA *ptr,
   }
 }
 
-static int rna_GPencil_active_layer_dummy_get(PointerRNA *ptr)
-{
-  bGPdata *gpd = (bGPdata *)ptr->owner_id;
-  return gpd->runtime.layer_idx;
-}
-
-static void rna_GPencil_active_layer_dummy_set(PointerRNA *ptr, int value)
-{
-  bGPdata *gpd = (bGPdata *)ptr->owner_id;
-  gpd->runtime.layer_idx = value;
-}
-
 static int rna_GPencil_active_layer_index_get(PointerRNA *ptr)
 {
   bGPdata *gpd = (bGPdata *)ptr->owner_id;
@@ -1840,15 +1828,6 @@ static void rna_def_gpencil_data(BlenderRNA *brna)
   RNA_def_property_ui_text(prop, "Layers", "");
   rna_def_gpencil_layers_api(brna, prop);
 
-  prop = RNA_def_property(srna, "layer_list", PROP_ENUM, PROP_NONE);
-  RNA_def_property_enum_funcs(prop,
-                              "rna_GPencil_active_layer_dummy_get",
-                              "rna_GPencil_active_layer_dummy_set",
-                              "rna_GPencil_active_layer_itemf");
-  RNA_def_property_enum_items(
-      prop, DummyRNA_DEFAULT_items); /* purely dynamic, as it maps to user-data */
-  RNA_def_property_ui_text(prop, "Layer List", "List of Layers");
-
   /* Animation Data */
   rna_def_animdata_common(srna);



More information about the Bf-blender-cvs mailing list