Next: , Previous: ClutterCairoTexture, Up: Top


20 ClutterClickAction

Action for clickable actors

20.1 Overview

<clutter-click-action> is a sub-class of <clutter-action> that implements the logic for clickable actors, by using the low level events of <clutter-actor>, such as <"button-press-event"> and <"button-release-event">, to synthesize the high level <"clicked"> signal.

To use <clutter-click-action> you just need to apply it to a <clutter-actor> using clutter-actor-add-action and connect to the <"clicked"> signal:

 
 ClutterAction *action = clutter_click_action_new ();
 
 clutter_actor_add_action (actor, action);
 
 g_signal_connect (action, "clicked", G_CALLBACK (on_clicked), NULL);

<clutter-click-action> also supports long press gestures: a long press is activated if the pointer remains pressed within a certain threshold (as defined by the <"long-press-threshold"> property) for a minimum amount of time (as the defined by the <"long-press-duration"> property). The <"long-press"> signal is emitted multiple times, using different <clutter-long-press-state> values; to handle long presses you should connect to the <"long-press"> signal and handle the different states:

 
 static gboolean
 on_long_press (ClutterClickAction *action,
 ClutterActor *actor,
 ClutterLongPressState state)
 {
 switch (state)
 {
 case CLUTTER_LONG_PRESS_QUERY:
 /&#x002A; return TRUE if the actor should support long press
 &#x002A; gestures, and FALSE otherwise; this state will be
 &#x002A; emitted on button presses
 &#x002A;/
 return TRUE;
 
 case CLUTTER_LONG_PRESS_ACTIVATE:
 /&#x002A; this state is emitted if the minimum duration has
 &#x002A; been reached without the gesture being cancelled.
 &#x002A; the return value is not used
 &#x002A;/
 return TRUE;
 
 case CLUTTER_LONG_PRESS_CANCEL:
 /&#x002A; this state is emitted if the long press was cancelled;
 &#x002A; for instance, the pointer went outside the actor or the
 &#x002A; allowed threshold, or the button was released before
 &#x002A; the minimum duration was reached. the return value is
 &#x002A; not used
 &#x002A;/
 return FALSE;
 }
 }

<clutter-click-action> is available since Clutter 1.4

20.2 Usage

— Function: clutter-click-action-new(ret <clutter-action>)

Creates a new <clutter-click-action> instance

ret
the newly created <clutter-click-action>

Since 1.4

— Function: clutter-click-action-get-button (self <clutter-click-action>)(ret unsigned-int)
— Method: get-button

Retrieves the button that was pressed.

action
a <clutter-click-action>
ret
the button value

Since 1.4

— Function: clutter-click-action-get-state (self <clutter-click-action>)(ret <clutter-modifier-type>)
— Method: get-state

Retrieves the modifier state of the click action.

action
a <clutter-click-action>
ret
the modifier state parameter, or 0

Since 1.6

— Function: clutter-click-action-get-coords (self <clutter-click-action>)(press_x float) (press_y float)
— Method: get-coords

Retrieves the screen coordinates of the button press.

action
a <clutter-click-action>
press-x
return location for the X coordinate, or ‘#f’.
press-y
return location for the Y coordinate, or ‘#f’.

Since 1.8

— Function: clutter-click-action-release (self <clutter-click-action>)
— Method: release

Emulates a release of the pointer button, which ungrabs the pointer and unsets the <"pressed"> state.

This function will also cancel the long press gesture if one was initiated.

This function is useful to break a grab, for instance after a certain amount of time has passed.

action
a <clutter-click-action>

Since 1.4

AltStyle によって変換されたページ (->オリジナル) /