[Bf-blender-cvs] [470e694] master: BMesh: New operator flag not to clear history

Campbell Barton noreply at git.blender.org
Mon Aug 25 09:03:44 CEST 2014


Commit: 470e694652a28d20d31e001240fdb9727a6d1480
Author: Campbell Barton
Date:   Mon Aug 25 16:40:46 2014 +1000
Branches: master
https://developer.blender.org/rB470e694652a28d20d31e001240fdb9727a6d1480

BMesh: New operator flag not to clear history

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

M	source/blender/bmesh/intern/bmesh_mesh.c
M	source/blender/bmesh/intern/bmesh_opdefines.c
M	source/blender/bmesh/intern/bmesh_operator_api.h

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

diff --git a/source/blender/bmesh/intern/bmesh_mesh.c b/source/blender/bmesh/intern/bmesh_mesh.c
index 26a224c..b16ea42 100644
--- a/source/blender/bmesh/intern/bmesh_mesh.c
+++ b/source/blender/bmesh/intern/bmesh_mesh.c
@@ -766,6 +766,8 @@ void bmesh_edit_begin(BMesh *UNUSED(bm), BMOpTypeFlag UNUSED(type_flag))
  */
 void bmesh_edit_end(BMesh *bm, BMOpTypeFlag type_flag)
 {
+	ListBase select_history;
+
 	/* BMO_OPTYPE_FLAG_UNTAN_MULTIRES disabled for now, see comment above in bmesh_edit_begin. */
 #ifdef BMOP_UNTAN_MULTIRES_ENABLED
 	/* switch multires data into tangent space */
@@ -784,9 +786,19 @@ void bmesh_edit_end(BMesh *bm, BMOpTypeFlag type_flag)
 		BM_mesh_normals_update(bm);
 	}
 
+
+	if ((type_flag & BMO_OPTYPE_FLAG_SELECT_VALIDATE) == 0) {
+		select_history = bm->selected;
+		BLI_listbase_clear(&bm->selected);
+	}
+
 	if (type_flag & BMO_OPTYPE_FLAG_SELECT_FLUSH) {
 		BM_mesh_select_mode_flush(bm);
 	}
+
+	if ((type_flag & BMO_OPTYPE_FLAG_SELECT_VALIDATE) == 0) {
+		bm->selected = select_history;
+	}
 }
 
 void BM_mesh_elem_index_ensure(BMesh *bm, const char htype)
diff --git a/source/blender/bmesh/intern/bmesh_opdefines.c b/source/blender/bmesh/intern/bmesh_opdefines.c
index 7dc46cf..5e568f8 100644
--- a/source/blender/bmesh/intern/bmesh_opdefines.c
+++ b/source/blender/bmesh/intern/bmesh_opdefines.c
@@ -115,7 +115,7 @@ static BMOpDefine bmo_smooth_vert_def = {
 	},
 	{{{'\0'}}},  /* no output */
 	bmo_smooth_vert_exec,
-	BMO_OPTYPE_FLAG_NORMALS_CALC,
+	(BMO_OPTYPE_FLAG_NORMALS_CALC),
 };
 
 /*
@@ -138,7 +138,7 @@ static BMOpDefine bmo_smooth_laplacian_vert_def = {
 	},
 	{{{'\0'}}},  /* no output */
 	bmo_smooth_laplacian_vert_exec,
-	BMO_OPTYPE_FLAG_NORMALS_CALC,
+	(BMO_OPTYPE_FLAG_NORMALS_CALC),
 };
 
 /*
@@ -154,7 +154,8 @@ static BMOpDefine bmo_recalc_face_normals_def = {
 	},
 	{{{'\0'}}},  /* no output */
 	bmo_recalc_face_normals_exec,
-	BMO_OPTYPE_FLAG_UNTAN_MULTIRES | BMO_OPTYPE_FLAG_NORMALS_CALC,
+	(BMO_OPTYPE_FLAG_UNTAN_MULTIRES |
+	 BMO_OPTYPE_FLAG_NORMALS_CALC),
 };
 
 /*
@@ -180,7 +181,8 @@ static BMOpDefine bmo_region_extend_def = {
 	 {{'\0'}},
 	},
 	bmo_region_extend_exec,
-	BMO_OPTYPE_FLAG_SELECT_FLUSH,
+	(BMO_OPTYPE_FLAG_SELECT_FLUSH |
+	 BMO_OPTYPE_FLAG_SELECT_VALIDATE),
 };
 
 /*
@@ -201,7 +203,10 @@ static BMOpDefine bmo_rotate_edges_def = {
 	 {{'\0'}},
 	},
 	bmo_rotate_edges_exec,
-	BMO_OPTYPE_FLAG_UNTAN_MULTIRES | BMO_OPTYPE_FLAG_NORMALS_CALC | BMO_OPTYPE_FLAG_SELECT_FLUSH,
+	(BMO_OPTYPE_FLAG_UNTAN_MULTIRES |
+	 BMO_OPTYPE_FLAG_NORMALS_CALC |
+	 BMO_OPTYPE_FLAG_SELECT_FLUSH |
+	 BMO_OPTYPE_FLAG_SELECT_VALIDATE),
 };
 
 /*
@@ -218,7 +223,8 @@ static BMOpDefine bmo_reverse_faces_def = {
 	},
 	{{{'\0'}}},  /* no output */
 	bmo_reverse_faces_exec,
-	BMO_OPTYPE_FLAG_UNTAN_MULTIRES | BMO_OPTYPE_FLAG_NORMALS_CALC,
+	(BMO_OPTYPE_FLAG_UNTAN_MULTIRES |
+	 BMO_OPTYPE_FLAG_NORMALS_CALC),
 };
 
 /*
@@ -240,7 +246,10 @@ static BMOpDefine bmo_bisect_edges_def = {
 	 {{'\0'}},
 	},
 	bmo_bisect_edges_exec,
-	BMO_OPTYPE_FLAG_UNTAN_MULTIRES | BMO_OPTYPE_FLAG_NORMALS_CALC | BMO_OPTYPE_FLAG_SELECT_FLUSH,
+	(BMO_OPTYPE_FLAG_UNTAN_MULTIRES |
+	 BMO_OPTYPE_FLAG_NORMALS_CALC |
+	 BMO_OPTYPE_FLAG_SELECT_FLUSH |
+	 BMO_OPTYPE_FLAG_SELECT_VALIDATE),
 };
 
 /*
@@ -266,7 +275,9 @@ static BMOpDefine bmo_mirror_def = {
 	 {{'\0'}},
 	},
 	bmo_mirror_exec,
-	BMO_OPTYPE_FLAG_NORMALS_CALC | BMO_OPTYPE_FLAG_SELECT_FLUSH,
+	(BMO_OPTYPE_FLAG_NORMALS_CALC |
+	 BMO_OPTYPE_FLAG_SELECT_FLUSH |
+	 BMO_OPTYPE_FLAG_SELECT_VALIDATE),
 };
 
 /*
@@ -291,7 +302,7 @@ static BMOpDefine bmo_find_doubles_def = {
 	 {{'\0'}},
 	},
 	bmo_find_doubles_exec,
-	BMO_OPTYPE_FLAG_NORMALS_CALC | BMO_OPTYPE_FLAG_SELECT_FLUSH,
+	(BMO_OPTYPE_FLAG_NOP),
 };
 
 /*
@@ -309,7 +320,10 @@ static BMOpDefine bmo_remove_doubles_def = {
 	},
 	{{{'\0'}}},  /* no output */
 	bmo_remove_doubles_exec,
-	BMO_OPTYPE_FLAG_UNTAN_MULTIRES | BMO_OPTYPE_FLAG_NORMALS_CALC | BMO_OPTYPE_FLAG_SELECT_FLUSH,
+	(BMO_OPTYPE_FLAG_UNTAN_MULTIRES |
+	 BMO_OPTYPE_FLAG_NORMALS_CALC |
+	 BMO_OPTYPE_FLAG_SELECT_FLUSH |
+	 BMO_OPTYPE_FLAG_SELECT_VALIDATE),
 };
 
 /*
@@ -328,7 +342,10 @@ static BMOpDefine bmo_automerge_def = {
 	},
 	{{{'\0'}}},  /* no output */
 	bmo_automerge_exec,
-	BMO_OPTYPE_FLAG_UNTAN_MULTIRES | BMO_OPTYPE_FLAG_NORMALS_CALC | BMO_OPTYPE_FLAG_SELECT_FLUSH,
+	(BMO_OPTYPE_FLAG_UNTAN_MULTIRES |
+	 BMO_OPTYPE_FLAG_NORMALS_CALC |
+	 BMO_OPTYPE_FLAG_SELECT_FLUSH |
+	 BMO_OPTYPE_FLAG_SELECT_VALIDATE),
 };
 
 /*
@@ -344,7 +361,10 @@ static BMOpDefine bmo_collapse_def = {
 	},
 	{{{'\0'}}},  /* no output */
 	bmo_collapse_exec,
-	BMO_OPTYPE_FLAG_UNTAN_MULTIRES | BMO_OPTYPE_FLAG_NORMALS_CALC | BMO_OPTYPE_FLAG_SELECT_FLUSH,
+	(BMO_OPTYPE_FLAG_UNTAN_MULTIRES |
+	 BMO_OPTYPE_FLAG_NORMALS_CALC |
+	 BMO_OPTYPE_FLAG_SELECT_FLUSH |
+	 BMO_OPTYPE_FLAG_SELECT_VALIDATE),
 };
 
 /*
@@ -361,7 +381,7 @@ static BMOpDefine bmo_pointmerge_facedata_def = {
 	},
 	{{{'\0'}}},  /* no output */
 	bmo_pointmerge_facedata_exec,
-	BMO_OPTYPE_FLAG_NORMALS_CALC | BMO_OPTYPE_FLAG_SELECT_FLUSH,
+	(BMO_OPTYPE_FLAG_NOP),
 };
 
 /*
@@ -379,7 +399,7 @@ static BMOpDefine bmo_average_vert_facedata_def = {
 	},
 	{{{'\0'}}},  /* no output */
 	bmo_average_vert_facedata_exec,
-	BMO_OPTYPE_FLAG_NORMALS_CALC | BMO_OPTYPE_FLAG_SELECT_FLUSH,
+	(BMO_OPTYPE_FLAG_NOP),
 };
 
 /*
@@ -396,7 +416,10 @@ static BMOpDefine bmo_pointmerge_def = {
 	},
 	{{{'\0'}}},  /* no output */
 	bmo_pointmerge_exec,
-	BMO_OPTYPE_FLAG_UNTAN_MULTIRES | BMO_OPTYPE_FLAG_NORMALS_CALC | BMO_OPTYPE_FLAG_SELECT_FLUSH,
+	(BMO_OPTYPE_FLAG_UNTAN_MULTIRES |
+	 BMO_OPTYPE_FLAG_NORMALS_CALC |
+	 BMO_OPTYPE_FLAG_SELECT_FLUSH |
+	 BMO_OPTYPE_FLAG_SELECT_VALIDATE),
 };
 
 /*
@@ -412,7 +435,7 @@ static BMOpDefine bmo_collapse_uvs_def = {
 	},
 	{{{'\0'}}},  /* no output */
 	bmo_collapse_uvs_exec,
-	BMO_OPTYPE_FLAG_NORMALS_CALC | BMO_OPTYPE_FLAG_SELECT_FLUSH,
+	(BMO_OPTYPE_FLAG_NOP),
 };
 
 /*
@@ -431,7 +454,10 @@ static BMOpDefine bmo_weld_verts_def = {
 	},
 	{{{'\0'}}},  /* no output */
 	bmo_weld_verts_exec,
-	BMO_OPTYPE_FLAG_UNTAN_MULTIRES | BMO_OPTYPE_FLAG_NORMALS_CALC | BMO_OPTYPE_FLAG_SELECT_FLUSH,
+	(BMO_OPTYPE_FLAG_UNTAN_MULTIRES |
+	 BMO_OPTYPE_FLAG_NORMALS_CALC |
+	 BMO_OPTYPE_FLAG_SELECT_FLUSH |
+	 BMO_OPTYPE_FLAG_SELECT_VALIDATE),
 };
 
 /*
@@ -451,7 +477,7 @@ static BMOpDefine bmo_create_vert_def = {
 	 {{'\0'}},
 	},
 	bmo_create_vert_exec,
-	BMO_OPTYPE_FLAG_NORMALS_CALC | BMO_OPTYPE_FLAG_SELECT_FLUSH,
+	(BMO_OPTYPE_FLAG_NOP),
 };
 
 /*
@@ -476,7 +502,10 @@ static BMOpDefine bmo_join_triangles_def = {
 	 {{'\0'}},
 	},
 	bmo_join_triangles_exec,
-	BMO_OPTYPE_FLAG_UNTAN_MULTIRES | BMO_OPTYPE_FLAG_NORMALS_CALC | BMO_OPTYPE_FLAG_SELECT_FLUSH,
+	(BMO_OPTYPE_FLAG_UNTAN_MULTIRES |
+	 BMO_OPTYPE_FLAG_NORMALS_CALC |
+	 BMO_OPTYPE_FLAG_SELECT_FLUSH |
+	 BMO_OPTYPE_FLAG_SELECT_VALIDATE),
 };
 
 /*
@@ -504,7 +533,10 @@ static BMOpDefine bmo_contextual_create_def = {
 	 {{'\0'}},
 	},
 	bmo_contextual_create_exec,
-	BMO_OPTYPE_FLAG_UNTAN_MULTIRES | BMO_OPTYPE_FLAG_NORMALS_CALC | BMO_OPTYPE_FLAG_SELECT_FLUSH,
+	(BMO_OPTYPE_FLAG_UNTAN_MULTIRES |
+	 BMO_OPTYPE_FLAG_NORMALS_CALC |
+	 BMO_OPTYPE_FLAG_SELECT_FLUSH |
+	 BMO_OPTYPE_FLAG_SELECT_VALIDATE),
 };
 
 /*
@@ -527,7 +559,9 @@ static BMOpDefine bmo_bridge_loops_def = {
 	 {{'\0'}},
 	},
 	bmo_bridge_loops_exec,
-	BMO_OPTYPE_FLAG_NORMALS_CALC | BMO_OPTYPE_FLAG_SELECT_FLUSH,
+	(BMO_OPTYPE_FLAG_NORMALS_CALC |
+	 BMO_OPTYPE_FLAG_SELECT_FLUSH |
+	 BMO_OPTYPE_FLAG_SELECT_VALIDATE),
 };
 
 /*
@@ -551,7 +585,8 @@ static BMOpDefine bmo_grid_fill_def = {
 	 {{'\0'}},
 	},
 	bmo_grid_fill_exec,
-	BMO_OPTYPE_FLAG_NORMALS_CALC | BMO_OPTYPE_FLAG_SELECT_FLUSH,
+	(BMO_OPTYPE_FLAG_NORMALS_CALC |
+	 BMO_OPTYPE_FLAG_SELECT_FLUSH),
 };
 
 
@@ -573,7 +608,8 @@ static BMOpDefine bmo_holes_fill_def = {
 	 {{'\0'}},
 	},
 	bmo_holes_fill_exec,
-	BMO_OPTYPE_FLAG_NORMALS_CALC | BMO_OPTYPE_FLAG_SELECT_FLUSH,
+	(BMO_OPTYPE_FLAG_NORMALS_CALC |
+	 BMO_OPTYPE_FLAG_SELECT_FLUSH),
 };
 
 
@@ -596,7 +632,7 @@ static BMOpDefine bmo_face_attribute_fill_def = {
 	 {{'\0'}},
 	},
 	bmo_face_attribute_fill_exec,
-	BMO_OPTYPE_FLAG_NORMALS_CALC | BMO_OPTYPE_FLAG_SELECT_FLUSH,
+	(BMO_OPTYPE_FLAG_NORMALS_CALC),
 };
 
 /*
@@ -619,7 +655,8 @@ static BMOpDefine bmo_edgeloop_fill_def = {
 	 {{'\0'}},
 	},
 	bmo_edgeloop_fill_exec,
-	BMO_OPTYPE_FLAG_NORMALS_CALC | BMO_OPTYPE_FLAG_SELECT_FLUSH,
+	(BMO_OPTYPE_FLAG_NORMALS_CALC |
+	 BMO_OPTYPE_FLAG_SELECT_FLUSH),
 };
 
 
@@ -643,7 +680,8 @@ static BMOpDefine bmo_edgenet_fill_def = {
 	 {{'\0'}},
 	},
 	bmo_edgenet_fill_exec,
-	BMO_OPTYPE_FLAG_NORMALS_CALC | BMO_OPTYPE_FLAG_SELECT_FLUSH,
+	(BMO_OPTYPE_FLAG_NORMALS_CALC |
+	 BMO_OPTYPE_FLAG_SELECT_FLUSH),
 };
 
 /*
@@ -667,7 +705,7 @@ static BMOpDefine bmo_edgenet_prepare_def = {
 	 {{'\0'}},
 	},
 	bmo_edgenet_prepare_exec,
-	BMO_OPTYPE_FLAG_NOP,
+	(BMO_OPTYPE_FLAG_NOP),
 };
 
 /*
@@ -686,7 +724,7 @@ static BMOpDefine bmo_rotate_def = {
 	},
 	{{{'\0'}}},  /* no output */
 	bmo_rotate_exec,
-	BMO_OPTYPE_FLAG_NORMALS_CALC,
+	(BMO_OPTYPE_FLAG_NORMALS_CALC),
 };
 
 /*
@@ -704,7 +742,7 @@ static BMOpDefine bmo_translate_def = {
 	},
 	{{{'\0'}}},  /* no output */
 	bmo_translate_exec,
-	BMO_OPTYPE_FLAG_NORMALS_CALC,
+	(BMO_OPTYPE_FLAG_NORMALS_CALC),
 };
 
 /*
@@ -722,7 +760,7 @@ static BMOpDefine bmo_scale_def = {
 	},
 	{{{'\0'}}},  /* no output */
 	bmo_scale_exec,
-	BMO_OPTYPE_FLAG_NORMALS_CALC,
+	(BMO_OPTYPE_FLAG_NORMALS_CALC),
 };
 
 
@@ -742,7 +780,7 @@ static BMOpDefine bmo_transform_def = {
 	},
 	{{{'\0'}}},  /* no output */
 	bmo_transform_exec,
-	BMO_OPTYPE_FLAG_NORMALS_CALC,
+	(BMO_OPTYPE_FLAG_NORMALS_CALC),
 };
 
 /*
@@ -760,7 +798,7 @@ static BMOpDefine bmo_object_load_bmesh_def = {
 	},
 	{{{'\0'}}},  /* no output */
 	bmo_object_load_bmesh_exec,
-	BMO_OPTYPE_FLAG_NOP,
+	(BMO_OPTYPE_FLAG_NOP),
 };
 
 
@@ -782,7 +820,7 @@ static BMOpDefine bmo_bmesh_to_mesh_def = {
 	},
 	{{{'\0'}}},  /* no output */
 	bmo_bmesh_to_mesh_exec,
-	BMO_OPTYPE_FLAG_NOP,
+	(BMO_OPTYPE_FLAG_NOP),
 };
 
 /*
@@ -804,7 +842,7 @@ static BMOpDefine bmo_mesh_to_bmesh_def = {
 	},
 	{{{'\0'}}},  /* no output */
 	bmo_mesh_to_bmesh_exec,
-	BMO_OPTYPE_FLAG_NOP,
+	(BMO_OPTYPE_FLAG_NOP),
 };
 
 /*
@@ -823,7 +861,7 @@ static BMOpDefine bmo_extrude_discrete_faces_def = {
 	 {{'\0'}},
 	},
 	

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list