[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