From 34581d03003d48816e36bfbaa0efb9784c87775d Mon Sep 17 00:00:00 2001 From: Carsten Haitzler Date: Fri, 16 Dec 2011 09:24:18 +0000 Subject: [PATCH] Add new api to set and get default event flags. SVN revision: 66275 --- legacy/evas/ChangeLog | 5 ++ legacy/evas/src/lib/Evas.h | 27 +++++++++++ legacy/evas/src/lib/canvas/evas_events.c | 56 ++++++++++++++-------- legacy/evas/src/lib/include/evas_private.h | 1 + 4 files changed, 70 insertions(+), 19 deletions(-) diff --git a/legacy/evas/ChangeLog b/legacy/evas/ChangeLog index 44fac01f2d..52e1e1fc78 100644 --- a/legacy/evas/ChangeLog +++ b/legacy/evas/ChangeLog @@ -567,3 +567,8 @@ * Textblock: Added "b" and "i" as default tags that can be overridden by style, and added the infra to support this. * Textblock: Added evas_textblock_text_utf8_to_markup + +2011-12-16 Carsten Haitzler (The Rasterman) + + * Add new api to set and get default event flags. + diff --git a/legacy/evas/src/lib/Evas.h b/legacy/evas/src/lib/Evas.h index de92b243a7..a12d536963 100644 --- a/legacy/evas/src/lib/Evas.h +++ b/legacy/evas/src/lib/Evas.h @@ -2374,6 +2374,33 @@ EAPI void evas_post_event_callback_remove_full (Evas *e, Evas_Objec * @{ */ +/** + * Set the default set of flags an event begins with + * + * @param e The canvas to set the default event flags of + * @param flags The default flags to use + * + * Events in evas can have an event_flags member. This starts out with + * and initial value (no flags). this lets you set the default flags that + * an event begins with to be @p flags + * + * @since 1.2 + */ +EAPI void evas_event_default_flags_set (Evas *e, Evas_Event_Flags flags) EINA_ARG_NONNULL(1); + +/** + * Get the defaulty set of flags an event begins with + * + * @param e The canvas to get the default event flags from + * @return The default event flags for that canvas + * + * This gets the default event flags events are produced with when fed in. + * + * @see evas_event_default_flags_set() + * @since 1.2 + */ +EAPI Evas_Event_Flags evas_event_default_flags_get (const Evas *e) EINA_ARG_NONNULL(1); + /** * Freeze all input events processing. * diff --git a/legacy/evas/src/lib/canvas/evas_events.c b/legacy/evas/src/lib/canvas/evas_events.c index 624842c673..bdda1bc79f 100644 --- a/legacy/evas/src/lib/canvas/evas_events.c +++ b/legacy/evas/src/lib/canvas/evas_events.c @@ -135,6 +135,24 @@ evas_event_list_copy(Eina_List *list) } /* public functions */ +EAPI void +evas_event_default_flags_set(Evas *e, Evas_Event_Flags flags) +{ + MAGIC_CHECK(e, Evas, MAGIC_EVAS); + return; + MAGIC_CHECK_END(); + e->default_event_flags = flags; +} + +EAPI Evas_Event_Flags +evas_event_default_flags_get(const Evas *e) +{ + MAGIC_CHECK(e, Evas, MAGIC_EVAS); + return EVAS_EVENT_FLAG_ON_HOLD; + MAGIC_CHECK_END(); + return e->default_event_flags; +} + EAPI void evas_event_freeze(Evas *e) { @@ -225,7 +243,7 @@ evas_event_feed_mouse_down(Evas *e, int b, Evas_Button_Flags flags, unsigned int ev.locks = &(e->locks); ev.flags = flags; ev.timestamp = timestamp; - ev.event_flags = EVAS_EVENT_FLAG_NONE; + ev.event_flags = e->default_event_flags; _evas_walk(e); /* append new touch point to the touch point list */ @@ -295,7 +313,7 @@ _post_up_handle(Evas *e, unsigned int timestamp, const void *data) ev.modifiers = &(e->modifiers); ev.locks = &(e->locks); ev.timestamp = timestamp; - ev.event_flags = EVAS_EVENT_FLAG_NONE; + ev.event_flags = e->default_event_flags; /* get new list of ins */ ins = evas_event_objects_event_list(e, NULL, e->pointer.x, e->pointer.y); @@ -339,7 +357,7 @@ _post_up_handle(Evas *e, unsigned int timestamp, const void *data) ev_in.modifiers = &(e->modifiers); ev_in.locks = &(e->locks); ev_in.timestamp = timestamp; - ev_in.event_flags = EVAS_EVENT_FLAG_NONE; + ev_in.event_flags = e->default_event_flags; EINA_LIST_FOREACH(ins, l, obj_itr) { @@ -417,7 +435,7 @@ evas_event_feed_mouse_up(Evas *e, int b, Evas_Button_Flags flags, unsigned int t ev.locks = &(e->locks); ev.flags = flags; ev.timestamp = timestamp; - ev.event_flags = EVAS_EVENT_FLAG_NONE; + ev.event_flags = e->default_event_flags; _evas_walk(e); /* update released touch point */ @@ -510,7 +528,7 @@ evas_event_feed_mouse_wheel(Evas *e, int direction, int z, unsigned int timestam ev.modifiers = &(e->modifiers); ev.locks = &(e->locks); ev.timestamp = timestamp; - ev.event_flags = EVAS_EVENT_FLAG_NONE; + ev.event_flags = e->default_event_flags; _evas_walk(e); copy = evas_event_list_copy(e->pointer.object.in); @@ -587,7 +605,7 @@ evas_event_feed_mouse_move(Evas *e, int x, int y, unsigned int timestamp, const ev.modifiers = &(e->modifiers); ev.locks = &(e->locks); ev.timestamp = timestamp; - ev.event_flags = EVAS_EVENT_FLAG_NONE; + ev.event_flags = e->default_event_flags; copy = evas_event_list_copy(e->pointer.object.in); EINA_LIST_FOREACH(copy, l, obj) { @@ -628,7 +646,7 @@ evas_event_feed_mouse_move(Evas *e, int x, int y, unsigned int timestamp, const ev.modifiers = &(e->modifiers); ev.locks = &(e->locks); ev.timestamp = timestamp; - ev.event_flags = EVAS_EVENT_FLAG_NONE; + ev.event_flags = e->default_event_flags; if (copy) eina_list_free(copy); while (outs) @@ -683,7 +701,7 @@ evas_event_feed_mouse_move(Evas *e, int x, int y, unsigned int timestamp, const ev.modifiers = &(e->modifiers); ev.locks = &(e->locks); ev.timestamp = timestamp; - ev.event_flags = EVAS_EVENT_FLAG_NONE; + ev.event_flags = e->default_event_flags; ev2.buttons = e->pointer.button; ev2.output.x = e->pointer.x; @@ -694,7 +712,7 @@ evas_event_feed_mouse_move(Evas *e, int x, int y, unsigned int timestamp, const ev2.modifiers = &(e->modifiers); ev2.locks = &(e->locks); ev2.timestamp = timestamp; - ev2.event_flags = EVAS_EVENT_FLAG_NONE; + ev2.event_flags = e->default_event_flags; ev3.buttons = e->pointer.button; ev3.output.x = e->pointer.x; @@ -705,7 +723,7 @@ evas_event_feed_mouse_move(Evas *e, int x, int y, unsigned int timestamp, const ev3.modifiers = &(e->modifiers); ev3.locks = &(e->locks); ev3.timestamp = timestamp; - ev3.event_flags = EVAS_EVENT_FLAG_NONE; + ev3.event_flags = e->default_event_flags; /* get all new in objects */ ins = evas_event_objects_event_list(e, NULL, x, y); @@ -823,7 +841,7 @@ evas_event_feed_mouse_in(Evas *e, unsigned int timestamp, const void *data) ev.modifiers = &(e->modifiers); ev.locks = &(e->locks); ev.timestamp = timestamp; - ev.event_flags = EVAS_EVENT_FLAG_NONE; + ev.event_flags = e->default_event_flags; _evas_walk(e); /* get new list of ins */ @@ -879,7 +897,7 @@ evas_event_feed_mouse_out(Evas *e, unsigned int timestamp, const void *data) ev.modifiers = &(e->modifiers); ev.locks = &(e->locks); ev.timestamp = timestamp; - ev.event_flags = EVAS_EVENT_FLAG_NONE; + ev.event_flags = e->default_event_flags; _evas_walk(e); /* if our mouse button is grabbed to any objects */ @@ -957,7 +975,7 @@ evas_event_feed_multi_down(Evas *e, ev.locks = &(e->locks); ev.flags = flags; ev.timestamp = timestamp; - ev.event_flags = EVAS_EVENT_FLAG_NONE; + ev.event_flags = e->default_event_flags; _evas_walk(e); /* append new touch point to the touch point list */ @@ -1039,7 +1057,7 @@ evas_event_feed_multi_up(Evas *e, ev.locks = &(e->locks); ev.flags = flags; ev.timestamp = timestamp; - ev.event_flags = EVAS_EVENT_FLAG_NONE; + ev.event_flags = e->default_event_flags; _evas_walk(e); /* update released touch point */ @@ -1122,7 +1140,7 @@ evas_event_feed_multi_move(Evas *e, ev.modifiers = &(e->modifiers); ev.locks = &(e->locks); ev.timestamp = timestamp; - ev.event_flags = EVAS_EVENT_FLAG_NONE; + ev.event_flags = e->default_event_flags; copy = evas_event_list_copy(e->pointer.object.in); EINA_LIST_FOREACH(copy, l, obj) @@ -1175,7 +1193,7 @@ evas_event_feed_multi_move(Evas *e, ev.modifiers = &(e->modifiers); ev.locks = &(e->locks); ev.timestamp = timestamp; - ev.event_flags = EVAS_EVENT_FLAG_NONE; + ev.event_flags = e->default_event_flags; /* get all new in objects */ ins = evas_event_objects_event_list(e, NULL, x, y); @@ -1257,7 +1275,7 @@ evas_event_feed_key_down(Evas *e, const char *keyname, const char *key, const ch ev.string = string; ev.compose = compose; ev.timestamp = timestamp; - ev.event_flags = EVAS_EVENT_FLAG_NONE; + ev.event_flags = e->default_event_flags; if (e->grabs) { @@ -1343,7 +1361,7 @@ evas_event_feed_key_up(Evas *e, const char *keyname, const char *key, const char ev.string = string; ev.compose = compose; ev.timestamp = timestamp; - ev.event_flags = EVAS_EVENT_FLAG_NONE; + ev.event_flags = e->default_event_flags; if (e->grabs) { @@ -1422,7 +1440,7 @@ evas_event_feed_hold(Evas *e, int hold, unsigned int timestamp, const void *data ev.hold = hold; ev.data = (void *)data; ev.timestamp = timestamp; - ev.event_flags = EVAS_EVENT_FLAG_NONE; + ev.event_flags = e->default_event_flags; _evas_walk(e); copy = evas_event_list_copy(e->pointer.object.in); diff --git a/legacy/evas/src/lib/include/evas_private.h b/legacy/evas/src/lib/include/evas_private.h index 30982eee82..232d96e35f 100644 --- a/legacy/evas/src/lib/include/evas_private.h +++ b/legacy/evas/src/lib/include/evas_private.h @@ -338,6 +338,7 @@ struct _Evas int walking_list; int events_frozen; + Evas_Event_Flags default_event_flags; struct { Evas_Module *module;