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

Reply via email to