events: Add proximity events
These events will be sent on tool proximity of tablet events.
This commit is contained in:
@@ -761,6 +761,10 @@ typedef enum { /*< flags prefix=CLUTTER_EVENT >*/
|
|||||||
* determined by its phase field; event added in 1.24
|
* determined by its phase field; event added in 1.24
|
||||||
* @CLUTTER_TOUCHPAD_SWIPE: A swipe gesture event, the current state is
|
* @CLUTTER_TOUCHPAD_SWIPE: A swipe gesture event, the current state is
|
||||||
* determined by its phase field; event added in 1.24
|
* determined by its phase field; event added in 1.24
|
||||||
|
* @CLUTTER_PROXIMITY_IN: A tool entered in proximity to a tablet;
|
||||||
|
* event added in 1.28
|
||||||
|
* @CLUTTER_PROXIMITY_OUT: A tool left from the proximity area of a tablet;
|
||||||
|
* event added in 1.28
|
||||||
* @CLUTTER_EVENT_LAST: Marks the end of the #ClutterEventType enumeration;
|
* @CLUTTER_EVENT_LAST: Marks the end of the #ClutterEventType enumeration;
|
||||||
* added in 1.10
|
* added in 1.10
|
||||||
*
|
*
|
||||||
@@ -788,6 +792,8 @@ typedef enum { /*< prefix=CLUTTER >*/
|
|||||||
CLUTTER_TOUCH_CANCEL,
|
CLUTTER_TOUCH_CANCEL,
|
||||||
CLUTTER_TOUCHPAD_PINCH,
|
CLUTTER_TOUCHPAD_PINCH,
|
||||||
CLUTTER_TOUCHPAD_SWIPE,
|
CLUTTER_TOUCHPAD_SWIPE,
|
||||||
|
CLUTTER_PROXIMITY_IN,
|
||||||
|
CLUTTER_PROXIMITY_OUT,
|
||||||
|
|
||||||
CLUTTER_EVENT_LAST /* helper */
|
CLUTTER_EVENT_LAST /* helper */
|
||||||
} ClutterEventType;
|
} ClutterEventType;
|
||||||
|
@@ -411,6 +411,8 @@ clutter_event_get_position (const ClutterEvent *event,
|
|||||||
case CLUTTER_CLIENT_MESSAGE:
|
case CLUTTER_CLIENT_MESSAGE:
|
||||||
case CLUTTER_DELETE:
|
case CLUTTER_DELETE:
|
||||||
case CLUTTER_EVENT_LAST:
|
case CLUTTER_EVENT_LAST:
|
||||||
|
case CLUTTER_PROXIMITY_IN:
|
||||||
|
case CLUTTER_PROXIMITY_OUT:
|
||||||
clutter_point_init (position, 0.f, 0.f);
|
clutter_point_init (position, 0.f, 0.f);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@@ -479,6 +481,8 @@ clutter_event_set_coords (ClutterEvent *event,
|
|||||||
case CLUTTER_CLIENT_MESSAGE:
|
case CLUTTER_CLIENT_MESSAGE:
|
||||||
case CLUTTER_DELETE:
|
case CLUTTER_DELETE:
|
||||||
case CLUTTER_EVENT_LAST:
|
case CLUTTER_EVENT_LAST:
|
||||||
|
case CLUTTER_PROXIMITY_IN:
|
||||||
|
case CLUTTER_PROXIMITY_OUT:
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case CLUTTER_ENTER:
|
case CLUTTER_ENTER:
|
||||||
@@ -1124,6 +1128,11 @@ clutter_event_set_device (ClutterEvent *event,
|
|||||||
case CLUTTER_TOUCHPAD_SWIPE:
|
case CLUTTER_TOUCHPAD_SWIPE:
|
||||||
/* Rely on priv data for these */
|
/* Rely on priv data for these */
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case CLUTTER_PROXIMITY_IN:
|
||||||
|
case CLUTTER_PROXIMITY_OUT:
|
||||||
|
event->proximity.device = device;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1203,6 +1212,11 @@ clutter_event_get_device (const ClutterEvent *event)
|
|||||||
case CLUTTER_TOUCHPAD_SWIPE:
|
case CLUTTER_TOUCHPAD_SWIPE:
|
||||||
/* Rely on priv data for these */
|
/* Rely on priv data for these */
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case CLUTTER_PROXIMITY_IN:
|
||||||
|
case CLUTTER_PROXIMITY_OUT:
|
||||||
|
device = event->proximity.device;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
return device;
|
return device;
|
||||||
@@ -1668,6 +1682,8 @@ clutter_event_get_axes (const ClutterEvent *event,
|
|||||||
case CLUTTER_KEY_PRESS:
|
case CLUTTER_KEY_PRESS:
|
||||||
case CLUTTER_KEY_RELEASE:
|
case CLUTTER_KEY_RELEASE:
|
||||||
case CLUTTER_EVENT_LAST:
|
case CLUTTER_EVENT_LAST:
|
||||||
|
case CLUTTER_PROXIMITY_IN:
|
||||||
|
case CLUTTER_PROXIMITY_OUT:
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case CLUTTER_SCROLL:
|
case CLUTTER_SCROLL:
|
||||||
|
@@ -117,6 +117,7 @@ typedef struct _ClutterCrossingEvent ClutterCrossingEvent;
|
|||||||
typedef struct _ClutterTouchEvent ClutterTouchEvent;
|
typedef struct _ClutterTouchEvent ClutterTouchEvent;
|
||||||
typedef struct _ClutterTouchpadPinchEvent ClutterTouchpadPinchEvent;
|
typedef struct _ClutterTouchpadPinchEvent ClutterTouchpadPinchEvent;
|
||||||
typedef struct _ClutterTouchpadSwipeEvent ClutterTouchpadSwipeEvent;
|
typedef struct _ClutterTouchpadSwipeEvent ClutterTouchpadSwipeEvent;
|
||||||
|
typedef struct _ClutterProximityEvent ClutterProximityEvent;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ClutterAnyEvent:
|
* ClutterAnyEvent:
|
||||||
@@ -213,6 +214,30 @@ struct _ClutterButtonEvent
|
|||||||
ClutterInputDevice *device;
|
ClutterInputDevice *device;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ClutterProximityEvent:
|
||||||
|
* @type: event type
|
||||||
|
* @time: event time
|
||||||
|
* @flags: event flags
|
||||||
|
* @stage: event source stage
|
||||||
|
* @source: event source actor
|
||||||
|
* @device: the device that originated the event. If you want the physical
|
||||||
|
* device the event originated from, use clutter_event_get_source_device()
|
||||||
|
*
|
||||||
|
* Event for tool proximity in tablet devices
|
||||||
|
*
|
||||||
|
* Since: 1.28
|
||||||
|
*/
|
||||||
|
struct _ClutterProximityEvent
|
||||||
|
{
|
||||||
|
ClutterEventType type;
|
||||||
|
guint32 time;
|
||||||
|
ClutterEventFlags flags;
|
||||||
|
ClutterStage *stage;
|
||||||
|
ClutterActor *source;
|
||||||
|
ClutterInputDevice *device;
|
||||||
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ClutterCrossingEvent:
|
* ClutterCrossingEvent:
|
||||||
* @type: event type
|
* @type: event type
|
||||||
@@ -490,6 +515,7 @@ union _ClutterEvent
|
|||||||
ClutterTouchEvent touch;
|
ClutterTouchEvent touch;
|
||||||
ClutterTouchpadPinchEvent touchpad_pinch;
|
ClutterTouchpadPinchEvent touchpad_pinch;
|
||||||
ClutterTouchpadSwipeEvent touchpad_swipe;
|
ClutterTouchpadSwipeEvent touchpad_swipe;
|
||||||
|
ClutterProximityEvent proximity;
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -2487,6 +2487,19 @@ _clutter_process_event_details (ClutterActor *stage,
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
case CLUTTER_PROXIMITY_IN:
|
||||||
|
case CLUTTER_PROXIMITY_OUT:
|
||||||
|
if (_clutter_event_process_filters (event))
|
||||||
|
break;
|
||||||
|
|
||||||
|
if (!clutter_actor_event (stage, event, TRUE))
|
||||||
|
{
|
||||||
|
/* and bubbling phase */
|
||||||
|
clutter_actor_event (stage, event, FALSE);
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
case CLUTTER_STAGE_STATE:
|
case CLUTTER_STAGE_STATE:
|
||||||
/* fullscreen / focus - forward to stage */
|
/* fullscreen / focus - forward to stage */
|
||||||
event->any.source = stage;
|
event->any.source = stage;
|
||||||
|
@@ -930,7 +930,9 @@ _clutter_stage_queue_event (ClutterStage *stage,
|
|||||||
* event processing function
|
* event processing function
|
||||||
*/
|
*/
|
||||||
device = clutter_event_get_device (event);
|
device = clutter_event_get_device (event);
|
||||||
if (device != NULL)
|
if (device != NULL &&
|
||||||
|
event->type != CLUTTER_PROXIMITY_IN &&
|
||||||
|
event->type != CLUTTER_PROXIMITY_OUT)
|
||||||
{
|
{
|
||||||
ClutterModifierType event_state = clutter_event_get_state (event);
|
ClutterModifierType event_state = clutter_event_get_state (event);
|
||||||
ClutterEventSequence *sequence = clutter_event_get_event_sequence (event);
|
ClutterEventSequence *sequence = clutter_event_get_event_sequence (event);
|
||||||
|
Reference in New Issue
Block a user