forked from enlightenment/efl
Efl.Pointer.Event: Add dup() method to copy an event
This commit is contained in:
parent
05dfab8442
commit
8e31929aab
|
@ -4465,7 +4465,7 @@ _direct_mouse_inout(Ecore_Evas *ee, const Ecore_Event_Mouse_IO *info, Efl_Pointe
|
||||||
|
|
||||||
eo_event_callback_call(e, EVAS_CANVAS_EVENT_POINTER, evt);
|
eo_event_callback_call(e, EVAS_CANVAS_EVENT_POINTER, evt);
|
||||||
processed = ev->evas_done;
|
processed = ev->evas_done;
|
||||||
eo_del(evt);
|
eo_unref(evt);
|
||||||
|
|
||||||
return processed;
|
return processed;
|
||||||
}
|
}
|
||||||
|
|
|
@ -37,5 +37,9 @@ interface Efl.Event
|
||||||
reset {
|
reset {
|
||||||
[[Resets the internal data to 0 or default values.]]
|
[[Resets the internal data to 0 or default values.]]
|
||||||
}
|
}
|
||||||
|
dup {
|
||||||
|
[[Creates a copy of this event.]]
|
||||||
|
return: own(Efl.Event);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -91,6 +91,21 @@ _efl_pointer_event_efl_event_reset(Eo *obj, Efl_Pointer_Event_Data *pd)
|
||||||
pd->wheel.dir = EFL_ORIENT_VERTICAL;
|
pd->wheel.dir = EFL_ORIENT_VERTICAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
EOLIAN static Efl_Event *
|
||||||
|
_efl_pointer_event_efl_event_dup(Eo *obj, Efl_Pointer_Event_Data *pd)
|
||||||
|
{
|
||||||
|
Efl_Pointer_Event_Data *ev;
|
||||||
|
Efl_Pointer_Event *evt;
|
||||||
|
|
||||||
|
evt = _efl_pointer_event_instance_get(EFL_POINTER_EVENT_CLASS, NULL, obj, &ev);
|
||||||
|
if (!evt) return NULL;
|
||||||
|
|
||||||
|
memcpy(ev, pd, sizeof(*ev));
|
||||||
|
ev->eo = evt;
|
||||||
|
|
||||||
|
return evt;
|
||||||
|
}
|
||||||
|
|
||||||
EOLIAN static void
|
EOLIAN static void
|
||||||
_efl_pointer_event_action_set(Eo *obj EINA_UNUSED, Efl_Pointer_Event_Data *pd, Efl_Pointer_Action act)
|
_efl_pointer_event_action_set(Eo *obj EINA_UNUSED, Efl_Pointer_Event_Data *pd, Efl_Pointer_Action act)
|
||||||
{
|
{
|
||||||
|
|
|
@ -126,6 +126,7 @@ class Efl.Pointer.Event (Eo.Base, Efl.Event)
|
||||||
Eo.Base.constructor;
|
Eo.Base.constructor;
|
||||||
class.destructor;
|
class.destructor;
|
||||||
Efl.Event.reset;
|
Efl.Event.reset;
|
||||||
|
Efl.Event.dup;
|
||||||
Efl.Event.timestamp.set;
|
Efl.Event.timestamp.set;
|
||||||
Efl.Event.timestamp.get;
|
Efl.Event.timestamp.get;
|
||||||
Efl.Event.event_type.set;
|
Efl.Event.event_type.set;
|
||||||
|
|
|
@ -1271,7 +1271,7 @@ _feed_cancel_out(const Ecore_X_Event_Mouse_Out *e, Eina_Bool cancel)
|
||||||
*/
|
*/
|
||||||
if (cancel)
|
if (cancel)
|
||||||
{
|
{
|
||||||
Ecore_Event_Mouse_Button cancel = {
|
Ecore_Event_Mouse_Button ev = {
|
||||||
.event_window = (Ecore_Window) e->event_win,
|
.event_window = (Ecore_Window) e->event_win,
|
||||||
.modifiers = e->modifiers,
|
.modifiers = e->modifiers,
|
||||||
.timestamp = e->time,
|
.timestamp = e->time,
|
||||||
|
@ -1279,7 +1279,7 @@ _feed_cancel_out(const Ecore_X_Event_Mouse_Out *e, Eina_Bool cancel)
|
||||||
.x = e->x,
|
.x = e->x,
|
||||||
.y = e->y,
|
.y = e->y,
|
||||||
};
|
};
|
||||||
ecore_event_evas_mouse_button_cancel(NULL, ECORE_EVENT_MOUSE_BUTTON_CANCEL, &cancel);
|
ecore_event_evas_mouse_button_cancel(NULL, ECORE_EVENT_MOUSE_BUTTON_CANCEL, &ev);
|
||||||
}
|
}
|
||||||
|
|
||||||
Ecore_Event_Mouse_IO io = {
|
Ecore_Event_Mouse_IO io = {
|
||||||
|
@ -1768,7 +1768,15 @@ _ecore_evas_x_event_window_hide(void *data EINA_UNUSED, int type EINA_UNUSED, vo
|
||||||
if (e->win != ee->prop.window) return ECORE_CALLBACK_PASS_ON;
|
if (e->win != ee->prop.window) return ECORE_CALLBACK_PASS_ON;
|
||||||
if (ee->in)
|
if (ee->in)
|
||||||
{
|
{
|
||||||
_feed_cancel_out(e, EINA_TRUE);
|
Ecore_X_Event_Mouse_Out out = {
|
||||||
|
.event_win = e->event_win,
|
||||||
|
.modifiers = 0,
|
||||||
|
.time = e->time,
|
||||||
|
.win = e->win,
|
||||||
|
.x = 0,
|
||||||
|
.y = 0,
|
||||||
|
};
|
||||||
|
_feed_cancel_out(&out, EINA_TRUE);
|
||||||
if (ee->func.fn_mouse_out) ee->func.fn_mouse_out(ee);
|
if (ee->func.fn_mouse_out) ee->func.fn_mouse_out(ee);
|
||||||
if (ee->prop.cursor.object) evas_object_hide(ee->prop.cursor.object);
|
if (ee->prop.cursor.object) evas_object_hide(ee->prop.cursor.object);
|
||||||
ee->in = EINA_FALSE;
|
ee->in = EINA_FALSE;
|
||||||
|
|
Loading…
Reference in New Issue