[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [54900] trunk/blender/source/blender/ editors/mesh/editmesh_select.c: fix for own regression, edge path tagging worked but toggline bevel didnt.

Campbell Barton ideasman42 at gmail.com
Wed Feb 27 08:05:02 CET 2013


Revision: 54900
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=54900
Author:   campbellbarton
Date:     2013-02-27 07:05:01 +0000 (Wed, 27 Feb 2013)
Log Message:
-----------
fix for own regression, edge path tagging worked but toggline bevel didnt.
reported as bug [#34449]

Modified Paths:
--------------
    trunk/blender/source/blender/editors/mesh/editmesh_select.c

Modified: trunk/blender/source/blender/editors/mesh/editmesh_select.c
===================================================================
--- trunk/blender/source/blender/editors/mesh/editmesh_select.c	2013-02-27 05:38:48 UTC (rev 54899)
+++ trunk/blender/source/blender/editors/mesh/editmesh_select.c	2013-02-27 07:05:01 UTC (rev 54900)
@@ -1339,6 +1339,22 @@
 	return 0;
 }
 
+static void edgetag_ensure_cd_flag(Scene *scene, Mesh *me)
+{
+	BMesh *bm = me->edit_btmesh->bm;
+
+	switch (scene->toolsettings->edge_mode) {
+		case EDGE_MODE_TAG_CREASE:
+			BM_mesh_cd_flag_ensure(bm, me, ME_CDFLAG_EDGE_CREASE);
+			break;
+		case EDGE_MODE_TAG_BEVEL:
+			BM_mesh_cd_flag_ensure(bm, me, ME_CDFLAG_EDGE_BWEIGHT);
+			break;
+		default:
+			break;
+	}
+}
+
 static int edgetag_shortest_path(Scene *scene, BMesh *bm, BMEdge *e_src, BMEdge *e_dst)
 {
 	/* BM_ELEM_TAG flag is used to store visited edges */
@@ -1352,16 +1368,7 @@
 	/* note, would pass BM_EDGE except we are looping over all edges anyway */
 	BM_mesh_elem_index_ensure(bm, BM_VERT /* | BM_EDGE */);
 
-	switch (scene->toolsettings->edge_mode) {
-		case EDGE_MODE_TAG_CREASE:
-			BM_mesh_cd_flag_ensure(bm, BKE_mesh_from_object(OBACT), ME_CDFLAG_EDGE_CREASE);
-			break;
-		case EDGE_MODE_TAG_BEVEL:
-			BM_mesh_cd_flag_ensure(bm, BKE_mesh_from_object(OBACT), ME_CDFLAG_EDGE_BWEIGHT);
-			break;
-		default:
-			break;
-	}
+	edgetag_ensure_cd_flag(scene, OBACT->data);
 
 	BM_ITER_MESH_INDEX (e, &eiter, bm, BM_EDGES_OF_MESH, i) {
 		if (BM_elem_flag_test(e, BM_ELEM_HIDDEN) == FALSE) {
@@ -1451,7 +1458,7 @@
 	e_dst = EDBM_edge_find_nearest(vc, &dist);
 	if (e_dst) {
 		Mesh *me = vc->obedit->data;
-		int path = 0;
+		bool is_path = false;
 		
 		if (em->bm->selected.last) {
 			BMEditSelection *ese = em->bm->selected.last;
@@ -1462,13 +1469,14 @@
 				if (e_act != e_dst) {
 					if (edgetag_shortest_path(vc->scene, em->bm, e_act, e_dst)) {
 						BM_select_history_remove(em->bm, e_act);
-						path = 1;
+						is_path = true;
 					}
 				}
 			}
 		}
-		if (path == 0) {
+		if (is_path == false) {
 			int act = (edgetag_context_check(vc->scene, em->bm, e_dst) == 0);
+			edgetag_ensure_cd_flag(vc->scene, vc->obedit->data);
 			edgetag_context_set(em->bm, vc->scene, e_dst, act); /* switch the edge option */
 		}
 		




More information about the Bf-blender-cvs mailing list