[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [41035] branches/bmesh/blender/source/ blender/editors: select boundary loop tool (aka region to loop) switches to edge select mode if the mode was face select
Andrew Wiggin
ender79bl at gmail.com
Sat Oct 15 16:47:38 CEST 2011
Revision: 41035
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=41035
Author: ender79
Date: 2011-10-15 14:47:37 +0000 (Sat, 15 Oct 2011)
Log Message:
-----------
select boundary loop tool (aka region to loop) switches to edge select mode if the mode was face select
Modified Paths:
--------------
branches/bmesh/blender/source/blender/editors/include/ED_mesh.h
branches/bmesh/blender/source/blender/editors/mesh/bmesh_select.c
branches/bmesh/blender/source/blender/editors/mesh/bmeshutils.c
branches/bmesh/blender/source/blender/editors/util/editmode_undo.c
Modified: branches/bmesh/blender/source/blender/editors/include/ED_mesh.h
===================================================================
--- branches/bmesh/blender/source/blender/editors/include/ED_mesh.h 2011-10-15 14:46:26 UTC (rev 41034)
+++ branches/bmesh/blender/source/blender/editors/include/ED_mesh.h 2011-10-15 14:47:37 UTC (rev 41035)
@@ -297,7 +297,7 @@
int ED_mesh_color_add(struct bContext *C, struct Scene *scene, struct Object *ob, struct Mesh *me, const char *name, int active_set);
int ED_mesh_color_remove(struct bContext *C, struct Object *ob, struct Mesh *me);
-void EDBM_selectmode_to_scene(struct Scene *scene, struct Object *obedit);
+void EDBM_selectmode_to_scene(struct bContext *C);
#include "../mesh/editbmesh_bvh.h"
Modified: branches/bmesh/blender/source/blender/editors/mesh/bmesh_select.c
===================================================================
--- branches/bmesh/blender/source/blender/editors/mesh/bmesh_select.c 2011-10-15 14:46:26 UTC (rev 41034)
+++ branches/bmesh/blender/source/blender/editors/mesh/bmesh_select.c 2011-10-15 14:47:37 UTC (rev 41035)
@@ -2437,7 +2437,10 @@
BMFace *f;
BMEdge *e;
BMIter iter;
+ ViewContext vc;
+ em_setup_viewcontext(C, &vc);
+
BM_ITER(e, &iter, em->bm, BM_EDGES_OF_MESH, NULL) {
BM_SetIndex(e, 0);
}
@@ -2465,8 +2468,17 @@
if (BM_GetIndex(e) && !BM_TestHFlag(e, BM_HIDDEN))
BM_Select_Edge(em->bm, e, 1);
}
-
+
+ /* If in face-only select mode, switch to edge select mode so that
+ an edge-only selection is not inconsistent state */
+ if (em->selectmode == SCE_SELECT_FACE) {
+ em->selectmode = SCE_SELECT_EDGE;
+ EDBM_selectmode_set(em);
+ EDBM_selectmode_to_scene(C);
+ }
+
WM_event_add_notifier(C, NC_GEOM|ND_SELECT, obedit->data);
+
return OPERATOR_FINISHED;
}
@@ -2628,7 +2640,7 @@
BMFace *f;
int selbigger = RNA_boolean_get(op->ptr, "select_bigger");
int a, b;
-
+
/*find the set of regions with smallest number of total faces*/
a = loop_find_regions(em, selbigger);
b = loop_find_regions(em, !selbigger);
Modified: branches/bmesh/blender/source/blender/editors/mesh/bmeshutils.c
===================================================================
--- branches/bmesh/blender/source/blender/editors/mesh/bmeshutils.c 2011-10-15 14:46:26 UTC (rev 41034)
+++ branches/bmesh/blender/source/blender/editors/mesh/bmeshutils.c 2011-10-15 14:47:37 UTC (rev 41035)
@@ -252,14 +252,19 @@
return EDBM_FinishOp(em, &bmop, NULL, 0);
}
-void EDBM_selectmode_to_scene(Scene *scene, Object *obedit)
+void EDBM_selectmode_to_scene(bContext *C)
{
+ Scene *scene = CTX_data_scene(C);
+ Object *obedit = CTX_data_edit_object(C);
BMEditMesh *em = ((Mesh*)obedit->data)->edit_btmesh;
if (!em)
return;
scene->toolsettings->selectmode = em->selectmode;
+
+ /* Request redraw of header buttons (to show new select mode) */
+ WM_event_add_notifier(C, NC_SCENE|ND_TOOLSETTINGS, scene);
}
void EDBM_MakeEditBMesh(ToolSettings *ts, Scene *UNUSED(scene), Object *ob)
Modified: branches/bmesh/blender/source/blender/editors/util/editmode_undo.c
===================================================================
--- branches/bmesh/blender/source/blender/editors/util/editmode_undo.c 2011-10-15 14:46:26 UTC (rev 41034)
+++ branches/bmesh/blender/source/blender/editors/util/editmode_undo.c 2011-10-15 14:47:37 UTC (rev 41035)
@@ -274,7 +274,7 @@
/* special case for editmesh, mode must be copied back to the scene */
if(obedit->type == OB_MESH) {
- EDBM_selectmode_to_scene(CTX_data_scene(C), obedit);
+ EDBM_selectmode_to_scene(C);
}
DAG_id_tag_update(&obedit->id, OB_RECALC_DATA);
More information about the Bf-blender-cvs
mailing list