Re: Expressing the desired stacking of *Action-managed actors



Samium Gromoff <_deepfire feelingofgreen ru> writes:
The problem is with children's DragAction -- once the PanAction hits the
movement threshold (as directed by GestureAction), the children stop
getting the events, and PanAction takes over, because it attaches a
"captured-event" handler to the ClutterStage itself.
[snip]
So, for conditionalisation of the PanAction's "captured-event" signal
handler, it appears that one has to install a signal handler to the
scroll actor before the PanAction is attached.

Once we're preceding the PanAction handler, we can control whether the
event reaches that handler by returning CLUTTER_EVENT_PROPAGATE or
CLUTTER_EVENT_STOP.

So far so good.  But then we need to deliver the event to one of the
scroll's children -- that is, if the event actually belongs to a child.

So, we either manually iterate over children, "picking" the first (if
any), whose bounding box covers the event.  Or we opt to use
clutter_stage_get_actor_at_pos(), which could be more or less expensive,
but is certainly more precise, if we choose to have complex Cogl children.

Very well, we have our candidate.  Now what?

It was much simpler that I thought.

To skip the PanAction handler, the preceding handler should:

1. Stop the signal emission on the current ClutterActor,
   using g_signal_stop_emission().
2. Return CLUTTER_EVENT_PROPAGATE.

-- 
regards,
Samium Gromoff


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]