Revision: 17262 http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=17262 Author: aligorith Date: 2008-11-01 12:35:59 +0100 (Sat, 01 Nov 2008)
Log Message: ----------- AnimSys2: IPO-Editor Borderselect There seems to be a consensus that the behaviour of the IPO-borderselect tool was far too messy. 1. "It's too easy to accidentally select tangents of other keys". 2. "When moving multiple keys, the handles for the selected keys (and only those keys) should move automatically with them" I've modified the behaviour so that the following occurs: * Only keyframes can get selected by borderselect (i.e. only the coordinates of the keyframe but not its handles are tested if they lie within the box) * Handles of a keyframe which lies within the borderselect region will inherit whatever selection status gets applied to that keyframe. This is consistent with clicking on the keyframes individually. Modified Paths: -------------- branches/animsys2/source/blender/src/editipo_mods.c Modified: branches/animsys2/source/blender/src/editipo_mods.c =================================================================== --- branches/animsys2/source/blender/src/editipo_mods.c 2008-11-01 11:35:08 UTC (rev 17261) +++ branches/animsys2/source/blender/src/editipo_mods.c 2008-11-01 11:35:59 UTC (rev 17262) @@ -1061,20 +1061,27 @@ int selflag= (val==LEFTMOUSE) ? SELECT : 0; ei= G.sipo->editipo; - for(a=0; a<G.sipo->totipo; a++, ei++) { + for (a=0; a<G.sipo->totipo; a++, ei++) { if (ISPOIN3(ei, flag & IPO_VISIBLE, flag & IPO_EDIT, icu)) { - if(ei->icu->bezt) { - b= ei->icu->totvert; + if (ei->icu->bezt) { bezt= ei->icu->bezt; - while(b--) { - if(BLI_in_rctf(&rectf, bezt->vec[0][0], bezt->vec[0][1])) - bezt->f1 = selflag ? (bezt->f1 | SELECT) : (bezt->f1 & ~SELECT); - if(BLI_in_rctf(&rectf, bezt->vec[1][0], bezt->vec[1][1])) - bezt->f2 = selflag ? (bezt->f2 | SELECT) : (bezt->f2 & ~SELECT); - if(BLI_in_rctf(&rectf, bezt->vec[2][0], bezt->vec[2][1])) - bezt->f3 = selflag ? (bezt->f3 | SELECT) : (bezt->f3 & ~SELECT); - - bezt++; + for (b=0; b < ei->icu->totvert; b++, bezt++) { + /* Borderselect only selects keyframes now, as overshooting handles often get caught too, + * which means that they may be inadvertantly moved as well. + * Also, for convenience, handles should get same status as keyframe (if it was within bounds) + */ + if (BLI_in_rctf(&rectf, bezt->vec[1][0], bezt->vec[1][1])) { + if (selflag) { + bezt->f1 |= SELECT; + bezt->f2 |= SELECT; + bezt->f3 |= SELECT; + } + else { + bezt->f1 &= ~SELECT; + bezt->f2 &= ~SELECT; + bezt->f3 &= ~SELECT; + } + } } } } _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org http://lists.blender.org/mailman/listinfo/bf-blender-cvs