[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [45944] trunk/blender/source/blender/ editors/uvedit/uvedit_ops.c: bmesh: fix selection flushing when editing UV' s and sync selection is enabled, and edge mode is in the 3D view.

Campbell Barton ideasman42 at gmail.com
Tue Apr 24 21:53:01 CEST 2012


Revision: 45944
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=45944
Author:   campbellbarton
Date:     2012-04-24 19:53:00 +0000 (Tue, 24 Apr 2012)
Log Message:
-----------
bmesh: fix selection flushing when editing UV's and sync selection is enabled, and edge mode is in the 3D view.

Modified Paths:
--------------
    trunk/blender/source/blender/editors/uvedit/uvedit_ops.c

Modified: trunk/blender/source/blender/editors/uvedit/uvedit_ops.c
===================================================================
--- trunk/blender/source/blender/editors/uvedit/uvedit_ops.c	2012-04-24 19:28:18 UTC (rev 45943)
+++ trunk/blender/source/blender/editors/uvedit/uvedit_ops.c	2012-04-24 19:53:00 UTC (rev 45944)
@@ -996,7 +996,8 @@
 	return 1;
 }
 
-static int select_edgeloop(Scene *scene, Image *ima, BMEditMesh *em, NearestHit *hit, float limit[2], int extend)
+static int select_edgeloop(Scene *scene, Image *ima, BMEditMesh *em, NearestHit *hit,
+                           float limit[2], const short extend)
 {
 	BMFace *efa;
 	BMIter iter, liter;
@@ -1914,7 +1915,7 @@
 		}
 
 		/* de-selecting an edge may deselect a face too - validate */
-		if (ts->uv_flag & UV_SYNC_SELECTION) {
+		if (sync) {
 			if (select == FALSE) {
 				BM_select_history_validate(em->bm);
 			}
@@ -1997,19 +1998,32 @@
 		}
 	}
 
-#if 0   /* BM_elem_select_set API handles all of this? */
-
 	if (sync) {
 		/* flush for mesh selection */
+
+		/* before bmesh */
+#if 0
 		if (ts->selectmode != SCE_SELECT_FACE) {
 			if (flush == 1) EDBM_select_flush(em);
 			else if (flush == -1) EDBM_deselect_flush(em);
 		}
-	}
 #else
-	(void)flush; /* flush is otherwise UNUSED */
-	(void)sync; /* sync is otherwise UNUSED */
+		if (flush != 0) {
+			if (loop) {
+				/* push vertex -> edge selection */
+				if (select) {
+					EDBM_select_flush(em);
+				}
+				else {
+					EDBM_deselect_flush(em);
+				}
+			}
+			else {
+				EDBM_selectmode_flush(em);
+			}
+		}
 #endif
+	}
 
 	DAG_id_tag_update(obedit->data, 0);
 	WM_event_add_notifier(C, NC_GEOM | ND_SELECT, obedit->data);




More information about the Bf-blender-cvs mailing list