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);

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to