[Bf-blender-cvs] [13de8b171e9] modifier-panels-ui: Changes from D7978 and D7499

Hans Goudey noreply at git.blender.org
Wed Jun 10 17:49:10 CEST 2020


Commit: 13de8b171e9a8487b4862d2c55e87dd296f80989
Author: Hans Goudey
Date:   Wed Jun 10 11:48:57 2020 -0400
Branches: modifier-panels-ui
https://developer.blender.org/rB13de8b171e9a8487b4862d2c55e87dd296f80989

Changes from D7978 and D7499

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

M	source/blender/gpencil_modifiers/intern/MOD_gpencil_ui_common.c
M	source/blender/gpencil_modifiers/intern/MOD_gpencil_ui_common.h
M	source/blender/gpencil_modifiers/intern/MOD_gpencilarmature.c
M	source/blender/gpencil_modifiers/intern/MOD_gpencilarray.c
M	source/blender/gpencil_modifiers/intern/MOD_gpencilbuild.c
M	source/blender/gpencil_modifiers/intern/MOD_gpencilcolor.c
M	source/blender/gpencil_modifiers/intern/MOD_gpencilhook.c
M	source/blender/gpencil_modifiers/intern/MOD_gpencillattice.c
M	source/blender/gpencil_modifiers/intern/MOD_gpencilmirror.c
M	source/blender/gpencil_modifiers/intern/MOD_gpencilmultiply.c
M	source/blender/gpencil_modifiers/intern/MOD_gpencilnoise.c
M	source/blender/gpencil_modifiers/intern/MOD_gpenciloffset.c
M	source/blender/gpencil_modifiers/intern/MOD_gpencilopacity.c
M	source/blender/gpencil_modifiers/intern/MOD_gpencilsimplify.c
M	source/blender/gpencil_modifiers/intern/MOD_gpencilsmooth.c
M	source/blender/gpencil_modifiers/intern/MOD_gpencilsubdiv.c
M	source/blender/gpencil_modifiers/intern/MOD_gpenciltexture.c
M	source/blender/gpencil_modifiers/intern/MOD_gpencilthick.c
M	source/blender/gpencil_modifiers/intern/MOD_gpenciltime.c
M	source/blender/gpencil_modifiers/intern/MOD_gpenciltint.c
M	source/blender/makesrna/intern/rna_constraint.c

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

diff --git a/source/blender/gpencil_modifiers/intern/MOD_gpencil_ui_common.c b/source/blender/gpencil_modifiers/intern/MOD_gpencil_ui_common.c
index e3faa34f6f4..93c87c840d6 100644
--- a/source/blender/gpencil_modifiers/intern/MOD_gpencil_ui_common.c
+++ b/source/blender/gpencil_modifiers/intern/MOD_gpencil_ui_common.c
@@ -34,6 +34,7 @@
 #include "DNA_particle_types.h"
 #include "DNA_scene_types.h"
 #include "DNA_screen_types.h"
+#include "DNA_space_types.h"
 
 #include "ED_object.h"
 
@@ -49,12 +50,23 @@
 
 #include "MOD_gpencil_ui_common.h" /* Self include */
 
+static Object *get_gpencilmodifier_object(const bContext *C)
+{
+  SpaceProperties *sbuts = CTX_wm_space_properties(C);
+  if (sbuts != NULL && (sbuts->pinid != NULL) && GS(sbuts->pinid->name) == ID_OB) {
+    return (Object *)sbuts->pinid;
+  }
+  else {
+    return CTX_data_active_object(C);
+  }
+}
+
 /**
  * Poll function so these modifier panels only show for grease pencil objects.
  */
 static bool gpencil_modifier_ui_poll(const bContext *C, PanelType *UNUSED(pt))
 {
-  Object *ob = CTX_data_active_object(C);
+  Object *ob = get_gpencilmodifier_object(C);
 
   return (ob != NULL) && (ob->type == OB_GPENCIL);
 }
@@ -68,7 +80,7 @@ static bool gpencil_modifier_ui_poll(const bContext *C, PanelType *UNUSED(pt))
  */
 static void gpencil_modifier_reorder(bContext *C, Panel *panel, int new_index)
 {
-  Object *ob = CTX_data_active_object(C);
+  Object *ob = get_gpencilmodifier_object(C);
 
   GpencilModifierData *md = BLI_findlink(&ob->greasepencil_modifiers, panel->runtime.list_index);
   PointerRNA props_ptr;
@@ -82,7 +94,7 @@ static void gpencil_modifier_reorder(bContext *C, Panel *panel, int new_index)
 
 static short get_gpencil_modifier_expand_flag(const bContext *C, Panel *panel)
 {
-  Object *ob = CTX_data_active_object(C);
+  Object *ob = get_gpencilmodifier_object(C);
   GpencilModifierData *md = BLI_findlink(&ob->greasepencil_modifiers, panel->runtime.list_index);
   return md->ui_expand_flag;
   return 0;
@@ -90,7 +102,7 @@ static short get_gpencil_modifier_expand_flag(const bContext *C, Panel *panel)
 
 static void set_gpencil_modifier_expand_flag(const bContext *C, Panel *panel, short expand_flag)
 {
-  Object *ob = CTX_data_active_object(C);
+  Object *ob = get_gpencilmodifier_object(C);
   GpencilModifierData *md = BLI_findlink(&ob->greasepencil_modifiers, panel->runtime.list_index);
   md->ui_expand_flag = expand_flag;
 }
@@ -227,12 +239,13 @@ void gpencil_modifier_panel_end(uiLayout *layout, PointerRNA *ptr)
 /**
  * Gets RNA pointers for the active object and the panel's modifier data.
  */
+#define ERROR_LIBDATA_MESSAGE TIP_("External library data")
 void gpencil_modifier_panel_get_property_pointers(const bContext *C,
                                                   Panel *panel,
                                                   PointerRNA *r_ob_ptr,
                                                   PointerRNA *r_md_ptr)
 {
-  Object *ob = CTX_data_active_object(C);
+  Object *ob = get_gpencilmodifier_object(C);
   GpencilModifierData *md = BLI_findlink(&ob->greasepencil_modifiers, panel->runtime.list_index);
 
   RNA_pointer_create(&ob->id, &RNA_GpencilModifier, md, r_md_ptr);
@@ -241,49 +254,38 @@ void gpencil_modifier_panel_get_property_pointers(const bContext *C,
     RNA_pointer_create(&ob->id, &RNA_Object, ob, r_ob_ptr);
   }
 
+  uiBlock *block = uiLayoutGetBlock(panel->layout);
+  UI_block_lock_clear(block);
+  UI_block_lock_set(block, ob && ID_IS_LINKED(ob), ERROR_LIBDATA_MESSAGE);
+
   uiLayoutSetContextPointer(panel->layout, "modifier", r_md_ptr);
 }
 
-#define ERROR_LIBDATA_MESSAGE TIP_("Can't edit external library data")
-void gpencil_modifier_panel_buttons(const bContext *C, Panel *panel)
+static void gpencil_modifier_ops_extra_draw(bContext *UNUSED(C), uiLayout *layout, void *md_v)
 {
-  uiLayout *row;
-  uiBlock *block;
-  uiLayout *layout = panel->layout;
-
-  row = uiLayoutRow(layout, false);
-
-  uiLayoutSetScaleY(row, 0.8f);
-
-  Object *ob = CTX_data_active_object(C);
-  GpencilModifierData *md = BLI_findlink(&ob->greasepencil_modifiers, panel->runtime.list_index);
+  GpencilModifierData *md = (GpencilModifierData *)md_v;
   const GpencilModifierTypeInfo *mti = BKE_gpencil_modifier_get_info(md->type);
 
-  block = uiLayoutGetBlock(row);
-  UI_block_lock_set(
-      block, BKE_object_obdata_is_libdata(ob) || ID_IS_LINKED(ob), ERROR_LIBDATA_MESSAGE);
+  uiLayoutSetOperatorContext(layout, WM_OP_INVOKE_DEFAULT);
 
-  if (mti->flags & eGpencilModifierTypeFlag_NoApply) {
-    uiLayoutSetEnabled(row, false);
+  if (!(mti->flags & eGpencilModifierTypeFlag_NoApply)) {
+    uiItemEnumO(layout,
+                "OBJECT_OT_gpencil_modifier_apply",
+                CTX_IFACE_(BLT_I18NCONTEXT_OPERATOR_DEFAULT, "Apply"),
+                0,
+                "apply_as",
+                MODIFIER_APPLY_DATA);
   }
-  uiItemEnumO(row,
-              "OBJECT_OT_gpencil_modifier_apply",
-              CTX_IFACE_(BLT_I18NCONTEXT_OPERATOR_DEFAULT, "Apply"),
-              0,
-              "apply_as",
-              MODIFIER_APPLY_DATA);
-
-  UI_block_lock_clear(block);
-  UI_block_lock_set(block, ob && ID_IS_LINKED(ob), ERROR_LIBDATA_MESSAGE);
 
-  uiItemO(row,
-          CTX_IFACE_(BLT_I18NCONTEXT_OPERATOR_DEFAULT, "Copy"),
-          ICON_NONE,
+  uiItemO(layout,
+          CTX_IFACE_(BLT_I18NCONTEXT_OPERATOR_DEFAULT, "Duplicate"),
+          ICON_DUPLICATE,
           "OBJECT_OT_gpencil_modifier_copy");
 
-  row = uiLayoutRow(layout, false);
-  uiLayoutSetScaleY(row, 0.2f);
-  uiItemS(row);
+  uiItemO(layout,
+          CTX_IFACE_(BLT_I18NCONTEXT_OPERATOR_DEFAULT, "Delete"),
+          ICON_X,
+          "OBJECT_OT_gpencil_modifier_remove");
 }
 
 static void gpencil_modifier_panel_header(const bContext *C, Panel *panel)
@@ -291,10 +293,12 @@ static void gpencil_modifier_panel_header(const bContext *C, Panel *panel)
   uiLayout *row, *sub;
   uiLayout *layout = panel->layout;
 
+  Object *ob = get_gpencilmodifier_object(C);
+  GpencilModifierData *md = BLI_findlink(&ob->greasepencil_modifiers, panel->runtime.list_index);
   PointerRNA ptr;
-  gpencil_modifier_panel_get_property_pointers(C, panel, NULL, &ptr);
+  RNA_pointer_create(&ob->id, &RNA_GpencilModifier, md, &ptr);
+  uiLayoutSetContextPointer(panel->layout, "modifier", &ptr);
 
-  GpencilModifierData *md = ptr.data;
   const GpencilModifierTypeInfo *mti = BKE_gpencil_modifier_get_info(md->type);
   bool narrow_panel = (panel->sizex < UI_UNIT_X * 8 && panel->sizex != 0);
 
@@ -319,8 +323,7 @@ static void gpencil_modifier_panel_header(const bContext *C, Panel *panel)
   uiItemR(row, &ptr, "show_render", 0, "", ICON_NONE);
 
   row = uiLayoutRow(layout, false);
-  uiLayoutSetEmboss(row, UI_EMBOSS_NONE);
-  uiItemO(row, "", ICON_X, "OBJECT_OT_gpencil_modifier_remove");
+  uiItemMenuF(row, "", ICON_DOWNARROW_HLT, gpencil_modifier_ops_extra_draw, md);
 
   /* Some extra padding at the end, so 'x' icon isn't too close to drag button. */
   uiItemS(layout);
diff --git a/source/blender/gpencil_modifiers/intern/MOD_gpencil_ui_common.h b/source/blender/gpencil_modifiers/intern/MOD_gpencil_ui_common.h
index b5fba38b123..9c6edb51d63 100644
--- a/source/blender/gpencil_modifiers/intern/MOD_gpencil_ui_common.h
+++ b/source/blender/gpencil_modifiers/intern/MOD_gpencil_ui_common.h
@@ -41,8 +41,6 @@ void gpencil_modifier_masking_panel_draw(const bContext *C,
 void gpencil_modifier_curve_header_draw(const bContext *C, Panel *panel);
 void gpencil_modifier_curve_panel_draw(const bContext *C, Panel *panel);
 
-void gpencil_modifier_panel_buttons(const struct bContext *C, struct Panel *panel);
-
 void gpencil_modifier_panel_end(struct uiLayout *layout, PointerRNA *ptr);
 
 void gpencil_modifier_panel_get_property_pointers(const bContext *C,
diff --git a/source/blender/gpencil_modifiers/intern/MOD_gpencilarmature.c b/source/blender/gpencil_modifiers/intern/MOD_gpencilarmature.c
index 922cfe4944b..c597b10bca3 100644
--- a/source/blender/gpencil_modifiers/intern/MOD_gpencilarmature.c
+++ b/source/blender/gpencil_modifiers/intern/MOD_gpencilarmature.c
@@ -205,7 +205,6 @@ static void panel_draw(const bContext *C, Panel *panel)
   PointerRNA ptr;
   PointerRNA ob_ptr;
   gpencil_modifier_panel_get_property_pointers(C, panel, &ob_ptr, &ptr);
-  gpencil_modifier_panel_buttons(C, panel);
 
   bool has_vertex_group = RNA_string_length(&ptr, "vertex_group") != 0;
 
diff --git a/source/blender/gpencil_modifiers/intern/MOD_gpencilarray.c b/source/blender/gpencil_modifiers/intern/MOD_gpencilarray.c
index 32c4a4f2deb..2fa014a28c7 100644
--- a/source/blender/gpencil_modifiers/intern/MOD_gpencilarray.c
+++ b/source/blender/gpencil_modifiers/intern/MOD_gpencilarray.c
@@ -347,7 +347,6 @@ static void panel_draw(const bContext *C, Panel *panel)
 
   PointerRNA ptr;
   gpencil_modifier_panel_get_property_pointers(C, panel, NULL, &ptr);
-  gpencil_modifier_panel_buttons(C, panel);
 
   uiLayoutSetPropSep(layout, true);
 
diff --git a/source/blender/gpencil_modifiers/intern/MOD_gpencilbuild.c b/source/blender/gpencil_modifiers/intern/MOD_gpencilbuild.c
index 0805967a9e3..b16a476cc22 100644
--- a/source/blender/gpencil_modifiers/intern/MOD_gpencilbuild.c
+++ b/source/blender/gpencil_modifiers/intern/MOD_gpencilbuild.c
@@ -556,7 +556,6 @@ static void panel_draw(const bContext *C, Panel *panel)
   PointerRNA ptr;
   PointerRNA ob_ptr;
   gpencil_modifier_panel_get_property_pointers(C, panel, &ob_ptr, &ptr);
-  gpencil_modifier_panel_buttons(C, panel);
 
   int mode = RNA_enum_get(&ptr, "mode");
 
diff --git a/source/blender/gpencil_modifiers/intern/MOD_gpencilcolor.c b/source/blender/gpencil_modifiers/intern/MOD_gpencilcolor.c
index eb4caf6a059..03137a5cf23 100644
--- a/source/blender/gpencil_modifiers/intern/MOD_gpencilcolor.c
+++ b/source/blender/gpencil_modifiers/intern/MOD_gpencilcolor.c
@@ -203,7 +203,6 @@ static void panel_draw(const bContext *C, Panel *panel)
 
   PointerRNA ptr;
   gpencil_modifier_panel_get_property_pointers(C, panel, NULL, &ptr);
-  gpencil_modifier_panel_buttons(C, panel);
 
   uiLayoutSetPropSep(layout, true);
 
diff --git a/source/blender/gpencil_modifiers/intern/MOD_gpencilhook.c b/source/blender/gpencil_modifiers/inte

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list