Revision: 18553
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=18553
Author:   ton
Date:     2009-01-17 17:11:12 +0100 (Sat, 17 Jan 2009)

Log Message:
-----------
2.5

Made 'select linked' in mesh editmode work (LKEY).
Also added counterpart work with boolean (SHIFT+L).

Brecht: thanks for easier rna property defs :)

Modified Paths:
--------------
    branches/blender2.5/blender/source/blender/editors/mesh/editmesh_mods.c
    branches/blender2.5/blender/source/blender/editors/mesh/mesh_ops.c

Modified: 
branches/blender2.5/blender/source/blender/editors/mesh/editmesh_mods.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/mesh/editmesh_mods.c     
2009-01-17 15:28:34 UTC (rev 18552)
+++ branches/blender2.5/blender/source/blender/editors/mesh/editmesh_mods.c     
2009-01-17 16:11:12 UTC (rev 18553)
@@ -2167,30 +2167,36 @@
        /* api callbacks */
        ot->exec= selectconnected_mesh_all_exec;
        ot->poll= ED_operator_editmesh;
+
 }
 
+/* *********** select connected ************* */
+
 // XXX should we use CTX_scene(C)->selectmode & SCE_SELECT_FACE like it was in 
the past ? calls selectconnected_delimit_mesh if true
-void selectconnected_mesh(bContext *C)
+static int selectconnected_mesh_invoke(bContext *C, wmOperator *op, wmEvent 
*event)
 {
+       Object *obedit= CTX_data_edit_object(C);
        ViewContext vc;
        EditVert *eve, *v1, *v2;
        EditEdge *eed;
        EditFace *efa;
-       short done=1, sel, toggle=0;
-       int shift= 0; // XXX
-               
+       short done=1, toggle=0;
+       int sel= !RNA_boolean_get(op->ptr, "deselect");
+       
+       /* unified_finednearest needs ogl */
+       view3d_operator_needs_opengl(C);
+       
        /* setup view context for argument to callbacks */
        em_setup_viewcontext(C, &vc);
        
-       if(vc.em->edges.first==0) return;
+       if(vc.em->edges.first==0) return OPERATOR_CANCELLED;
        
+       vc.mval[0]= event->x - vc.ar->winrct.xmin;
+       vc.mval[1]= event->y - vc.ar->winrct.ymin;
+       
        if( unified_findnearest(&vc, &eve, &eed, &efa)==0 ) {
-               /* error("Nothing indicated "); */ /* this is mostly annoying, 
eps with occluded geometry */
-               return;
+               return OPERATOR_CANCELLED;
        }
-       
-       sel= 1;
-       if(shift) sel=0;
 
        /* clear test flags */
        for(v1= vc.em->verts.first; v1; v1= v1->next) v1->f1= 0;
@@ -2243,14 +2249,6 @@
        
        BIF_undo_push("Select Linked");
        
-}
-
-static int selectconnected_mesh_exec(bContext *C, wmOperator *op)
-{
-       Object *obedit= CTX_data_edit_object(C);
-       
-       selectconnected_mesh(C);
-       
        WM_event_add_notifier(C, NC_OBJECT|ND_GEOM_SELECT, obedit);
        return OPERATOR_FINISHED;       
 }
@@ -2262,10 +2260,14 @@
        ot->idname= "MESH_OT_selectconnected_mesh";
        
        /* api callbacks */
-       ot->exec= selectconnected_mesh_exec;
+       ot->invoke= selectconnected_mesh_invoke;
        ot->poll= ED_operator_editmesh;
+
+       RNA_def_boolean(ot->srna, "deselect", 0, "Deselect", "");
 }
 
+/* ************************* */
+
 /* for use with selectconnected_delimit_mesh only! */
 #define is_edge_delimit_ok(eed) ((eed->tmp.l == 1) && (eed->seam==0))
 #define is_face_tag(efa) is_edge_delimit_ok(efa->e1) || 
is_edge_delimit_ok(efa->e2) || is_edge_delimit_ok(efa->e3) || (efa->v4 && 
is_edge_delimit_ok(efa->e4))

Modified: branches/blender2.5/blender/source/blender/editors/mesh/mesh_ops.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/mesh/mesh_ops.c  
2009-01-17 15:28:34 UTC (rev 18552)
+++ branches/blender2.5/blender/source/blender/editors/mesh/mesh_ops.c  
2009-01-17 16:11:12 UTC (rev 18553)
@@ -104,8 +104,11 @@
        WM_keymap_add_item(keymap, "MESH_OT_select_less", PADMINUS, KM_PRESS, 
KM_CTRL, 0);
        WM_keymap_add_item(keymap, "MESH_OT_selectswap_mesh", IKEY, KM_PRESS, 
KM_CTRL, 0);
        WM_keymap_add_item(keymap, "MESH_OT_select_non_manifold", MKEY, 
KM_PRESS, (KM_CTRL|KM_SHIFT|KM_ALT), 0);
+       
        WM_keymap_add_item(keymap, "MESH_OT_selectconnected_mesh_all", LKEY, 
KM_PRESS, KM_CTRL, 0);
        WM_keymap_add_item(keymap, "MESH_OT_selectconnected_mesh", LKEY, 
KM_PRESS, 0, 0);
+       RNA_boolean_set(WM_keymap_add_item(keymap, 
"MESH_OT_selectconnected_mesh", LKEY, KM_PRESS, KM_SHIFT, 0)->ptr, "deselect", 
1);
+       
        RNA_float_set(WM_keymap_add_item(keymap, 
"MESH_OT_select_linked_flat_faces", FKEY, KM_PRESS, (KM_CTRL|KM_SHIFT|KM_ALT), 
0)->ptr,"sharpness",135.0);
        RNA_float_set(WM_keymap_add_item(keymap, "MESH_OT_select_sharp_edges", 
SKEY, KM_PRESS, (KM_CTRL|KM_SHIFT|KM_ALT), 0)->ptr,"sharpness",135.0);          
 
        


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

Reply via email to