Graph editor, when 'Only Selected Handles' is enabled, dont allow selecting a handle...
authorCampbell Barton <ideasman42@gmail.com>
Mon, 8 Feb 2010 18:00:27 +0000 (18:00 +0000)
committerCampbell Barton <ideasman42@gmail.com>
Mon, 8 Feb 2010 18:00:27 +0000 (18:00 +0000)
source/blender/editors/space_graph/graph_select.c

index d6ac14809858252f9b56d9dfae30055380001ed7..b2a38c295fa9467f1b3230e85512032e0e6f6c24 100644 (file)
@@ -687,7 +687,16 @@ enum {
        NEAREST_HANDLE_KEY,
        NEAREST_HANDLE_RIGHT
 } eHandleIndex; 
+
+/* check if its ok to select a handle */
+// XXX also need to check for int-values only?
+static int fcurve_handle_sel_check(SpaceIpo *sipo, BezTriple *bezt)
+{
+       if (sipo->flag & SIPO_NOHANDLES) return 0;
+       if ((sipo->flag & SIPO_SELVHANDLESONLY) && BEZSELECTED(bezt)==0) return 0;
+       return 1;
+}
+
 /* Find the vertex (either handle (0/2) or the keyframe (1)) that is nearest to the mouse cursor (in area coordinates)  
  * Selected verts get a disadvantage, to make it easier to select handles behind.
  * Returns eHandleIndex
@@ -751,8 +760,7 @@ static short findnearest_fcurve_vert (bAnimContext *ac, int mval[2], FCurve **fc
                                }
                                
                                /* handles - only do them if they're visible */
-                               // XXX also need to check for int-values only?
-                               if ((sipo->flag & SIPO_NOHANDLES)==0) {
+                               if (fcurve_handle_sel_check(sipo, bezt1)) {
                                        /* first handle only visible if previous segment had handles */
                                        if ( (!prevbezt && (bezt1->ipo==BEZT_IPO_BEZ)) || (prevbezt && (prevbezt->ipo==BEZT_IPO_BEZ)) )
                                        {