[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [57685] trunk/blender/source/blender/ editors/mesh/editmesh_path.c: make behavior for edge tagging more predictable.

Campbell Barton ideasman42 at gmail.com
Mon Jun 24 07:24:28 CEST 2013


Revision: 57685
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=57685
Author:   campbellbarton
Date:     2013-06-24 05:24:27 +0000 (Mon, 24 Jun 2013)
Log Message:
-----------
make behavior for edge tagging more predictable.
last-picked edge is always selected+active.

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

Modified: trunk/blender/source/blender/editors/mesh/editmesh_path.c
===================================================================
--- trunk/blender/source/blender/editors/mesh/editmesh_path.c	2013-06-24 04:51:56 UTC (rev 57684)
+++ trunk/blender/source/blender/editors/mesh/editmesh_path.c	2013-06-24 05:24:27 UTC (rev 57685)
@@ -255,6 +255,7 @@
 
 	e_dst = EDBM_edge_find_nearest(vc, &dist);
 	if (e_dst) {
+		const char edge_mode = vc->scene->toolsettings->edge_mode;
 		struct UserData user_data = {bm, vc->obedit->data, vc->scene};
 		LinkNode *path = NULL;
 		Mesh *me = vc->obedit->data;
@@ -296,16 +297,26 @@
 			edgetag_set_cb(e_dst, is_act, &user_data); /* switch the edge option */
 		}
 
+		if (edge_mode != EDGE_MODE_SELECT) {
+			/* simple rules - last edge is _always_ active and selected */
+			if (e_act)
+				BM_edge_select_set(bm, e_act, false);
+			BM_edge_select_set(bm, e_dst, true);
+			BM_select_history_store(bm, e_dst);
+		}
+
 		EDBM_selectmode_flush(em);
 
 		/* even if this is selected it may not be in the selection list */
-		if (edgetag_test_cb(e_dst, &user_data) == 0)
-			BM_select_history_remove(bm, e_dst);
-		else
-			BM_select_history_store(bm, e_dst);
+		if (edge_mode == EDGE_MODE_SELECT) {
+			if (edgetag_test_cb(e_dst, &user_data) == 0)
+				BM_select_history_remove(bm, e_dst);
+			else
+				BM_select_history_store(bm, e_dst);
+		}
 
 		/* force drawmode for mesh */
-		switch (vc->scene->toolsettings->edge_mode) {
+		switch (edge_mode) {
 
 			case EDGE_MODE_TAG_SEAM:
 				me->drawflag |= ME_DRAWSEAMS;




More information about the Bf-blender-cvs mailing list