[Bf-blender-cvs] [9f5bf197a0c] master: Edit Mesh Selection: Draw the backbuff of edge selection only when requested

Germano noreply at git.blender.org
Mon Dec 4 15:05:22 CET 2017


Commit: 9f5bf197a0c3d53af2bf438460e0b2433d3519dd
Author: Germano
Date:   Mon Dec 4 12:05:06 2017 -0200
Branches: master
https://developer.blender.org/rB9f5bf197a0c3d53af2bf438460e0b2433d3519dd

Edit Mesh Selection: Draw the backbuff of edge selection only when requested

And make sure the width is 1

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

M	source/blender/editors/mesh/editmesh_select.c
M	source/blender/editors/space_view3d/drawobject.c

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

diff --git a/source/blender/editors/mesh/editmesh_select.c b/source/blender/editors/mesh/editmesh_select.c
index 3f443b49a5e..77a107534dd 100644
--- a/source/blender/editors/mesh/editmesh_select.c
+++ b/source/blender/editors/mesh/editmesh_select.c
@@ -1573,9 +1573,17 @@ static bool mouse_mesh_loop(bContext *C, const int mval[2], bool extend, bool de
 	mvalf[1] = (float)(vc.mval[1] = mval[1]);
 	em = vc.em;
 
+	/* Make sure that the edges are also considered for selection.
+	 * TODO: cleanup: add `selectmode` as a parameter */
+	const short ts_selectmode = vc.scene->toolsettings->selectmode;
+	vc.scene->toolsettings->selectmode |= SCE_SELECT_EDGE;
+
 	/* no afterqueue (yet), so we check it now, otherwise the bm_xxxofs indices are bad */
 	ED_view3d_backbuf_validate(&vc);
 
+	/* restore `selectmode` */
+	vc.scene->toolsettings->selectmode = ts_selectmode;
+
 	eed = EDBM_edge_find_nearest_ex(&vc, &dist, NULL, true, true, NULL);
 	if (eed == NULL) {
 		return false;
diff --git a/source/blender/editors/space_view3d/drawobject.c b/source/blender/editors/space_view3d/drawobject.c
index d7e3b78cdc3..a1075f7efcf 100644
--- a/source/blender/editors/space_view3d/drawobject.c
+++ b/source/blender/editors/space_view3d/drawobject.c
@@ -8273,6 +8273,7 @@ static DMDrawOption bbs_mesh_wire__setDrawOptions(void *userData, int index)
 static void bbs_mesh_wire(BMEditMesh *em, DerivedMesh *dm, int offset)
 {
 	drawBMOffset_userData data = {em->bm, offset};
+	glLineWidth(1);
 	dm->drawMappedEdges(dm, bbs_mesh_wire__setDrawOptions, &data);
 }
 
@@ -8437,9 +8438,11 @@ void draw_object_backbufsel(Scene *scene, View3D *v3d, RegionView3D *rv3d, Objec
 
 				ED_view3d_polygon_offset(rv3d, 1.0);
 
-				/* we draw edges always, for loop (select) tools */
-				bbs_mesh_wire(em, dm, bm_solidoffs);
-				bm_wireoffs = bm_solidoffs + em->bm->totedge;
+				/* we draw edges if edge select mode */
+				if (ts->selectmode & SCE_SELECT_EDGE) {
+					bbs_mesh_wire(em, dm, bm_solidoffs);
+					bm_wireoffs = bm_solidoffs + em->bm->totedge;
+				}
 
 				/* we draw verts if vert select mode. */
 				if (ts->selectmode & SCE_SELECT_VERTEX) {



More information about the Bf-blender-cvs mailing list