Skip to content
  • Jonas Dreßler's avatar
    clutter/gesture: Cancel other gestures when moving to RECOGNIZING · 63cc4da4
    Jonas Dreßler authored
    Quite often there are situations where multiple gestures try to
    recognize, keeping track of the same set of points (for example an edge
    drag gesture on the stage and a click gesture somewhere in the
    scenegraph). Usually what's wanted here is that the first gesture to
    move to RECOGNIZING wins over all other active gestures and "claims" the
    point for itself.
    
    We implement this by introducing a concept called "influencing". It
    works by making all gestures operating on a shared set of points aware
    of each other using ClutterAction->register_sequence().
    ClutterGesture uses this vfunc to keep track of all other
    ClutterGestures that are potentially conflicting, and keeps a list
    (priv->cancel_on_recognizing) of those. As soon as the move to
    RECOGNIZING happens, all gestures inside this list get moved to
    CANCELLED.
    
    To allow fine-grained control over this behavior, two APIs are
    introduced:
    
    1) on the implementation level (should_influence() and
    shou...
    63cc4da4