Commit: 599d643e7d2def96c1ae6f110893337d195d8d16
Author: Bastien Montagne
Date:   Tue Feb 3 12:21:43 2015 +0100
Branches: temp_custom_loop_normals
https://developer.blender.org/rB599d643e7d2def96c1ae6f110893337d195d8d16

Split add/clear clnors data operator (vcol does that too, so...).

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

M       release/scripts/startup/bl_ui/properties_data_mesh.py
M       source/blender/editors/mesh/mesh_data.c
M       source/blender/editors/mesh/mesh_intern.h
M       source/blender/editors/mesh/mesh_ops.c

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

diff --git a/release/scripts/startup/bl_ui/properties_data_mesh.py 
b/release/scripts/startup/bl_ui/properties_data_mesh.py
index c6f7014..8efd14a 100644
--- a/release/scripts/startup/bl_ui/properties_data_mesh.py
+++ b/release/scripts/startup/bl_ui/properties_data_mesh.py
@@ -373,11 +373,9 @@ class DATA_PT_customdata(MeshButtonsPanel, Panel):
         col.operator("mesh.customdata_clear_skin", icon='X')
 
         if me.has_custom_normals:
-            col.operator("mesh.customdata_add_clear_custom_splitnormals",
-                         icon='X', text="Clear Custom Split Normals Data")
+            col.operator("mesh.customdata_custom_splitnormals_clear", icon='X')
         else:
-            col.operator("mesh.customdata_add_clear_custom_splitnormals",
-                         icon='ZOOMIN', text="Add Custom Split Normals Data")
+            col.operator("mesh.customdata_custom_splitnormals_add", 
icon='ZOOMIN')
 
         col = layout.column()
 
diff --git a/source/blender/editors/mesh/mesh_data.c 
b/source/blender/editors/mesh/mesh_data.c
index 798f9fa..c56e7c8 100644
--- a/source/blender/editors/mesh/mesh_data.c
+++ b/source/blender/editors/mesh/mesh_data.c
@@ -839,7 +839,7 @@ void MESH_OT_customdata_clear_skin(wmOperatorType *ot)
 }
 
 /* Clear custom loop normals */
-static int mesh_customdata_add_clear_custom_splitnormals_poll(bContext *C)
+static int mesh_customdata_custom_splitnormals_add_clear_poll(bContext *C)
 {
        Object *ob = ED_object_context(C);
 
@@ -852,15 +852,12 @@ static int 
mesh_customdata_add_clear_custom_splitnormals_poll(bContext *C)
        return false;
 }
 
-static int mesh_customdata_add_clear_custom_splitnormals_exec(bContext *C, 
wmOperator *UNUSED(op))
+static int mesh_customdata_custom_splitnormals_add_exec(bContext *C, 
wmOperator *UNUSED(op))
 {
        Object *ob = ED_object_context(C);
        Mesh *me = ob->data;
 
-       if (BKE_mesh_has_custom_loop_normals(me)) {
-               return mesh_customdata_clear_exec__internal(C, BM_LOOP, 
CD_CUSTOMLOOPNORMAL);
-       }
-       else {
+       if (!BKE_mesh_has_custom_loop_normals(me)) {
                CustomData *data = GET_CD_DATA(me, ldata);
 
                if (me->edit_btmesh) {
@@ -875,18 +872,45 @@ static int 
mesh_customdata_add_clear_custom_splitnormals_exec(bContext *C, wmOpe
 
                return OPERATOR_FINISHED;
        }
+       return OPERATOR_CANCELLED;
+}
+
+void MESH_OT_customdata_custom_splitnormals_add(wmOperatorType *ot)
+{
+       /* identifiers */
+       ot->name = "Add Custom Split Normals Data";
+       ot->idname = "MESH_OT_customdata_custom_splitnormals_add";
+       ot->description = "Add a custom split normals layer, if none exists 
yet";
+
+       /* api callbacks */
+       ot->exec = mesh_customdata_custom_splitnormals_add_exec;
+       ot->poll = mesh_customdata_custom_splitnormals_add_clear_poll;
+
+       /* flags */
+       ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO;
+}
+
+static int mesh_customdata_custom_splitnormals_clear_exec(bContext *C, 
wmOperator *UNUSED(op))
+{
+       Object *ob = ED_object_context(C);
+       Mesh *me = ob->data;
+
+       if (BKE_mesh_has_custom_loop_normals(me)) {
+               return mesh_customdata_clear_exec__internal(C, BM_LOOP, 
CD_CUSTOMLOOPNORMAL);
+       }
+       return OPERATOR_CANCELLED;
 }
 
-void MESH_OT_customdata_add_clear_custom_splitnormals(wmOperatorType *ot)
+void MESH_OT_customdata_custom_splitnormals_clear(wmOperatorType *ot)
 {
        /* identifiers */
-       ot->name = "Add/Clear Custom Split Normals Data";
-       ot->idname = "MESH_OT_customdata_add_clear_custom_splitnormals";
-       ot->description = "Add a custom split normals layer, or remove it if it 
already exists";
+       ot->name = "Clear Custom Split Normals Data";
+       ot->idname = "MESH_OT_customdata_custom_splitnormals_clear";
+       ot->description = "Remove the custom split normals layer, if it exists";
 
        /* api callbacks */
-       ot->exec = mesh_customdata_add_clear_custom_splitnormals_exec;
-       ot->poll = mesh_customdata_add_clear_custom_splitnormals_poll;
+       ot->exec = mesh_customdata_custom_splitnormals_clear_exec;
+       ot->poll = mesh_customdata_custom_splitnormals_add_clear_poll;
 
        /* flags */
        ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO;
diff --git a/source/blender/editors/mesh/mesh_intern.h 
b/source/blender/editors/mesh/mesh_intern.h
index e027f52..8f5ecae 100644
--- a/source/blender/editors/mesh/mesh_intern.h
+++ b/source/blender/editors/mesh/mesh_intern.h
@@ -238,7 +238,8 @@ void MESH_OT_vertex_color_remove(struct wmOperatorType *ot);
 /* no create_mask yet */
 void MESH_OT_customdata_clear_mask(struct wmOperatorType *ot);
 void MESH_OT_customdata_clear_skin(struct wmOperatorType *ot);
-void MESH_OT_customdata_add_clear_custom_splitnormals(struct wmOperatorType 
*ot);
+void MESH_OT_customdata_custom_splitnormals_add(struct wmOperatorType *ot);
+void MESH_OT_customdata_custom_splitnormals_clear(struct wmOperatorType *ot);
 void MESH_OT_drop_named_image(struct wmOperatorType *ot);
 
 
diff --git a/source/blender/editors/mesh/mesh_ops.c 
b/source/blender/editors/mesh/mesh_ops.c
index d462185..59d0de8 100644
--- a/source/blender/editors/mesh/mesh_ops.c
+++ b/source/blender/editors/mesh/mesh_ops.c
@@ -153,7 +153,8 @@ void ED_operatortypes_mesh(void)
        WM_operatortype_append(MESH_OT_vertex_color_remove);
        WM_operatortype_append(MESH_OT_customdata_clear_mask);
        WM_operatortype_append(MESH_OT_customdata_clear_skin);
-       
WM_operatortype_append(MESH_OT_customdata_add_clear_custom_splitnormals);
+       WM_operatortype_append(MESH_OT_customdata_custom_splitnormals_add);
+       WM_operatortype_append(MESH_OT_customdata_custom_splitnormals_clear);
        WM_operatortype_append(MESH_OT_drop_named_image);
 
        WM_operatortype_append(MESH_OT_edgering_select);

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to