add a hold event to feed.

SVN revision: 34160
This commit is contained in:
Carsten Haitzler 2008-03-31 21:38:38 +00:00
parent d76a37172f
commit 73b6cc9ff8
2 changed files with 52 additions and 1 deletions

View File

@ -50,7 +50,8 @@ typedef enum _Evas_Callback_Type
EVAS_CALLBACK_MOVE, /**< Move Event */
EVAS_CALLBACK_RESIZE, /**< Resize Event */
EVAS_CALLBACK_RESTACK, /**< Restack Event */
EVAS_CALLBACK_DEL /**< Object Being Deleted (called before Free) */
EVAS_CALLBACK_DEL, /**< Object Being Deleted (called before Free) */
EVAS_CALLBACK_HOLD /**< Events go on/off hold */
} Evas_Callback_Type; /**< The type of event to trigger the callback */
typedef enum _Evas_Button_Flags
@ -147,6 +148,7 @@ typedef struct _Evas_Event_Mouse_Move Evas_Event_Mouse_Move; /**< Event structur
typedef struct _Evas_Event_Mouse_Wheel Evas_Event_Mouse_Wheel; /**< Event structure for #EVAS_CALLBACK_MOUSE_WHEEL event callbacks */
typedef struct _Evas_Event_Key_Down Evas_Event_Key_Down; /**< Event structure for #EVAS_CALLBACK_KEY_DOWN event callbacks */
typedef struct _Evas_Event_Key_Up Evas_Event_Key_Up; /**< Event structure for #EVAS_CALLBACK_KEY_UP event callbacks */
typedef struct _Evas_Event_Hold Evas_Event_Hold; /**< Event structure for #EVAS_CALLBACK_HOLD event callbacks */
#define EVAS_LOAD_ERROR_NONE 0 /**< No error on load */
#define EVAS_LOAD_ERROR_GENERIC 1 /**< A non-specific error occured */
@ -350,6 +352,15 @@ struct _Evas_Event_Key_Up /** Key release event */
Evas_Event_Flags event_flags;
};
struct _Evas_Event_Hold /** Hold change event */
{
int hold; /**< The hold flag */
void *data;
unsigned int timestamp;
Evas_Event_Flags event_flags;
};
typedef enum _Evas_Object_Pointer_Mode
{
EVAS_OBJECT_POINTER_MODE_AUTOGRAB, /**< default, X11-like */
@ -759,6 +770,7 @@ extern "C" {
EAPI void evas_event_feed_mouse_wheel (Evas *e, int direction, int z, unsigned int timestamp, const void *data);
EAPI void evas_event_feed_key_down (Evas *e, const char *keyname, const char *key, const char *string, const char *compose, unsigned int timestamp, const void *data);
EAPI void evas_event_feed_key_up (Evas *e, const char *keyname, const char *key, const char *string, const char *compose, unsigned int timestamp, const void *data);
EAPI void evas_event_feed_hold (Evas *e, int hold, unsigned int timestamp, const void *data);
EAPI void evas_object_focus_set (Evas_Object *obj, Evas_Bool focus);
EAPI Evas_Bool evas_object_focus_get (const Evas_Object *obj);

View File

@ -982,6 +982,45 @@ evas_event_feed_key_up(Evas *e, const char *keyname, const char *key, const char
_evas_unwalk(e);
}
/**
* To be documented.
*
* FIXME: To be fixed.
*
*/
EAPI void
evas_event_feed_hold(Evas *e, int hold, unsigned int timestamp, const void *data)
{
Evas_List *l, *copy;
Evas_Event_Hold ev;
MAGIC_CHECK(e, Evas, MAGIC_EVAS);
return;
MAGIC_CHECK_END();
if (e->events_frozen > 0) return;
e->last_timestamp = timestamp;
ev.hold = hold;
ev.data = (void *)data;
ev.timestamp = timestamp;
ev.event_flags = EVAS_EVENT_FLAG_NONE;
_evas_walk(e);
copy = evas_event_list_copy(e->pointer.object.in);
for (l = copy; l; l = l->next)
{
Evas_Object *obj;
obj = l->data;
if (e->events_frozen <= 0)
evas_object_event_callback_call(obj, EVAS_CALLBACK_HOLD, &ev);
if (e->delete_me) break;
}
if (copy) copy = evas_list_free(copy);
_evas_unwalk(e);
}
/**
* @defgroup Evas_Object_Event_Flags_Group Evas Object Event Flag Functions
*