synched with trunk at revision 34793
[blender.git] / source / blender / editors / mesh / mesh_data.c
index 424d2b273e6a4e13d24159aa101b755cb1eccd37..d1c6ff4c4aee822688e840793fb7a28665a7e32f 100644 (file)
 #include "DNA_scene_types.h"
 #include "DNA_view3d_types.h"
 
-#include "BLI_math.h"
-#include "BLI_editVert.h"
-#include "BLI_edgehash.h"
-#include "BLI_utildefines.h"
-
 #include "BKE_context.h"
 #include "BKE_depsgraph.h"
 #include "BKE_displist.h"
 #include "BKE_mesh.h"
 #include "BKE_report.h"
 
+#include "BLI_math.h"
+#include "BLI_editVert.h"
+#include "BLI_edgehash.h"
+
 #include "RNA_access.h"
 #include "RNA_define.h"
 
@@ -158,7 +157,7 @@ static void delete_customdata_layer(bContext *C, Object *ob, CustomDataLayer *la
        }
 }
 
-int ED_mesh_uv_texture_add(bContext *C, Mesh *me, const char *name, int active_set)
+int ED_mesh_uv_texture_add(bContext *C, Scene *scene, Object *ob, Mesh *me, const char *name, int active_set)
 {
        EditMesh *em;
        int layernum;
@@ -190,7 +189,7 @@ int ED_mesh_uv_texture_add(bContext *C, Mesh *me, const char *name, int active_s
                mesh_update_customdata_pointers(me);
        }
 
-       DAG_id_tag_update(&me->id, 0);
+       DAG_id_flush_update(&me->id, OB_RECALC_DATA);
        WM_event_add_notifier(C, NC_GEOM|ND_DATA, me);
 
        return 1;
@@ -209,7 +208,7 @@ int ED_mesh_uv_texture_remove(bContext *C, Object *ob, Mesh *me)
                return 0;
 
        delete_customdata_layer(C, ob, cdl);
-       DAG_id_tag_update(&me->id, 0);
+       DAG_id_flush_update(&me->id, OB_RECALC_DATA);
        WM_event_add_notifier(C, NC_GEOM|ND_DATA, me);
 
        return 1;
@@ -253,7 +252,7 @@ int ED_mesh_color_add(bContext *C, Scene *scene, Object *ob, Mesh *me, const cha
                        shadeMeshMCol(scene, ob, me);
        }
 
-       DAG_id_tag_update(&me->id, 0);
+       DAG_id_flush_update(&me->id, OB_RECALC_DATA);
        WM_event_add_notifier(C, NC_GEOM|ND_DATA, me);
 
        return 1;
@@ -272,7 +271,7 @@ int ED_mesh_color_remove(bContext *C, Object *ob, Mesh *me)
                return 0;
 
        delete_customdata_layer(C, ob, cdl);
-       DAG_id_tag_update(&me->id, 0);
+       DAG_id_flush_update(&me->id, OB_RECALC_DATA);
        WM_event_add_notifier(C, NC_GEOM|ND_DATA, me);
 
        return 1;
@@ -287,12 +286,13 @@ static int layers_poll(bContext *C)
        return (ob && !ob->id.lib && ob->type==OB_MESH && data && !data->lib);
 }
 
-static int uv_texture_add_exec(bContext *C, wmOperator *UNUSED(op))
+static int uv_texture_add_exec(bContext *C, wmOperator *op)
 {
+       Scene *scene= CTX_data_scene(C);
        Object *ob= CTX_data_pointer_get_type(C, "object", &RNA_Object).data;
        Mesh *me= ob->data;
 
-       if(!ED_mesh_uv_texture_add(C, me, NULL, TRUE))
+       if(!ED_mesh_uv_texture_add(C, scene, ob, me, NULL, TRUE))
                return OPERATOR_CANCELLED;
 
        return OPERATOR_FINISHED;
@@ -334,7 +334,8 @@ static int drop_named_image_invoke(bContext *C, wmOperator *op, wmEvent *event)
                char path[FILE_MAX];
                
                RNA_string_get(op->ptr, "filepath", path);
-               ima= BKE_add_image_file(path);
+               ima= BKE_add_image_file(path, 
+                                                               scene ? scene->r.cfra : 1);
        }
        else {
                RNA_string_get(op->ptr, "name", name);
@@ -391,7 +392,7 @@ void MESH_OT_drop_named_image(wmOperatorType *ot)
        RNA_def_string(ot->srna, "filepath", "Path", FILE_MAX, "Filepath", "Path to image file");
 }
 
-static int uv_texture_remove_exec(bContext *C, wmOperator *UNUSED(op))
+static int uv_texture_remove_exec(bContext *C, wmOperator *op)
 {
        Object *ob= CTX_data_pointer_get_type(C, "object", &RNA_Object).data;
        Mesh *me= ob->data;
@@ -419,7 +420,7 @@ void MESH_OT_uv_texture_remove(wmOperatorType *ot)
 
 /*********************** vertex color operators ************************/
 
-static int vertex_color_add_exec(bContext *C, wmOperator *UNUSED(op))
+static int vertex_color_add_exec(bContext *C, wmOperator *op)
 {
        Scene *scene= CTX_data_scene(C);
        Object *ob= CTX_data_pointer_get_type(C, "object", &RNA_Object).data;
@@ -446,7 +447,7 @@ void MESH_OT_vertex_color_add(wmOperatorType *ot)
        ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
 }
 
-static int vertex_color_remove_exec(bContext *C, wmOperator *UNUSED(op))
+static int vertex_color_remove_exec(bContext *C, wmOperator *op)
 {
        Object *ob= CTX_data_pointer_get_type(C, "object", &RNA_Object).data;
        Mesh *me= ob->data;
@@ -474,7 +475,7 @@ void MESH_OT_vertex_color_remove(wmOperatorType *ot)
 
 /*********************** sticky operators ************************/
 
-static int sticky_add_exec(bContext *C, wmOperator *UNUSED(op))
+static int sticky_add_exec(bContext *C, wmOperator *op)
 {
        Scene *scene= CTX_data_scene(C);
        View3D *v3d= CTX_wm_view3d(C);
@@ -486,7 +487,7 @@ static int sticky_add_exec(bContext *C, wmOperator *UNUSED(op))
 
        RE_make_sticky(scene, v3d);
 
-       DAG_id_tag_update(&me->id, 0);
+       DAG_id_flush_update(&me->id, OB_RECALC_DATA);
        WM_event_add_notifier(C, NC_GEOM|ND_DATA, me);
 
        return OPERATOR_FINISHED;
@@ -507,7 +508,7 @@ void MESH_OT_sticky_add(wmOperatorType *ot)
        ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
 }
 
-static int sticky_remove_exec(bContext *C, wmOperator *UNUSED(op))
+static int sticky_remove_exec(bContext *C, wmOperator *op)
 {
        Object *ob= CTX_data_pointer_get_type(C, "object", &RNA_Object).data;
        Mesh *me= ob->data;
@@ -518,7 +519,7 @@ static int sticky_remove_exec(bContext *C, wmOperator *UNUSED(op))
        CustomData_free_layer_active(&me->vdata, CD_MSTICKY, me->totvert);
        me->msticky= NULL;
 
-       DAG_id_tag_update(&me->id, 0);
+       DAG_id_flush_update(&me->id, OB_RECALC_DATA);
        WM_event_add_notifier(C, NC_GEOM|ND_DATA, me);
 
        return OPERATOR_FINISHED;
@@ -593,7 +594,7 @@ static void mesh_calc_edges(Mesh *mesh, int update)
                        *med= *med_orig; /* copy from the original */
                } else {
                        BLI_edgehashIterator_getKey(ehi, (int*)&med->v1, (int*)&med->v2);
-                       med->flag = ME_EDGEDRAW|ME_EDGERENDER|SELECT; /* select for newly created meshes which are selected [#25595] */
+                       med->flag = ME_EDGEDRAW|ME_EDGERENDER;
                }
        }
        BLI_edgehashIterator_free(ehi);
@@ -615,7 +616,7 @@ void ED_mesh_update(Mesh *mesh, bContext *C, int calc_edges)
 
        mesh_calc_normals(mesh->mvert, mesh->totvert, mesh->mface, mesh->totface, NULL);
 
-       DAG_id_tag_update(&mesh->id, 0);
+       DAG_id_flush_update(&mesh->id, OB_RECALC_DATA);
        WM_event_add_notifier(C, NC_GEOM|ND_DATA, mesh);
 }