[Bf-blender-cvs] [13870d5] master: Fix T38655: Face path select fails with edge/vert select enabled too

Campbell Barton noreply at git.blender.org
Mon Feb 17 22:31:20 CET 2014


Commit: 13870d51773a7d7799084e77b0700c362ddeb64c
Author: Campbell Barton
Date:   Tue Feb 18 08:21:19 2014 +1100
https://developer.blender.org/rB13870d51773a7d7799084e77b0700c362ddeb64c

Fix T38655: Face path select fails with edge/vert select enabled too

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

M	source/blender/editors/mesh/editmesh_path.c

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

diff --git a/source/blender/editors/mesh/editmesh_path.c b/source/blender/editors/mesh/editmesh_path.c
index 18db21a..3e64c22 100644
--- a/source/blender/editors/mesh/editmesh_path.c
+++ b/source/blender/editors/mesh/editmesh_path.c
@@ -449,14 +449,21 @@ static int edbm_shortest_path_pick_invoke(bContext *C, wmOperator *UNUSED(op), c
 {
 	ViewContext vc;
 	BMEditMesh *em;
+	BMElem *ele;
 
-	view3d_operator_needs_opengl(C);
 
 	em_setup_viewcontext(C, &vc);
 	copy_v2_v2_int(vc.mval, event->mval);
 	em = vc.em;
 
-	if (em->selectmode & SCE_SELECT_VERTEX) {
+	ele = BM_mesh_active_elem_get(em->bm);
+	if (ele == NULL) {
+		return OPERATOR_PASS_THROUGH;
+	}
+
+	view3d_operator_needs_opengl(C);
+
+	if ((em->selectmode & SCE_SELECT_VERTEX) && (ele->head.htype == BM_VERT)) {
 		if (mouse_mesh_shortest_path_vert(&vc)) {
 			return OPERATOR_FINISHED;
 		}
@@ -464,7 +471,7 @@ static int edbm_shortest_path_pick_invoke(bContext *C, wmOperator *UNUSED(op), c
 			return OPERATOR_PASS_THROUGH;
 		}
 	}
-	else if (em->selectmode & SCE_SELECT_EDGE) {
+	else if ((em->selectmode & SCE_SELECT_EDGE) && (ele->head.htype == BM_EDGE)) {
 		if (mouse_mesh_shortest_path_edge(&vc)) {
 			return OPERATOR_FINISHED;
 		}
@@ -472,7 +479,7 @@ static int edbm_shortest_path_pick_invoke(bContext *C, wmOperator *UNUSED(op), c
 			return OPERATOR_PASS_THROUGH;
 		}
 	}
-	else if (em->selectmode & SCE_SELECT_FACE) {
+	else if ((em->selectmode & SCE_SELECT_FACE) && (ele->head.htype == BM_FACE)) {
 		if (mouse_mesh_shortest_path_face(&vc)) {
 			return OPERATOR_FINISHED;
 		}




More information about the Bf-blender-cvs mailing list