forked from enlightenment/efl
ecore-evas/buffer: implement ignore_events method
Summary: this is a simple implementation of ignore_events functionality which sets pass_events if it's an image or prevents the emission of events in other cases the result should be that no user events are received. this deliberately does not block the triggering of resize callbacks as in the original ticket since this guarantees broken functionality and is just not a good idea fix T4700 Reviewers: devilhorns, Hermet Reviewed By: Hermet Subscribers: Hermet, cedric, #reviewers, #committers Tags: #efl_display_system Maniphest Tasks: T4700 Differential Revision: https://phab.enlightenment.org/D6876
This commit is contained in:
parent
e3b6f5a959
commit
ba3fe6c1cb
|
@ -110,6 +110,17 @@ _ecore_evas_move_resize(Ecore_Evas *ee, int x EINA_UNUSED, int y EINA_UNUSED, in
|
||||||
_ecore_evas_resize(ee, w, h);
|
_ecore_evas_resize(ee, w, h);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
_ecore_evas_buffer_ignore_events_set(Ecore_Evas *ee, int val)
|
||||||
|
{
|
||||||
|
Ecore_Evas_Engine_Buffer_Data *bdata = ee->engine.data;
|
||||||
|
|
||||||
|
if (ee->ignore_events == val) return;
|
||||||
|
ee->ignore_events = val;
|
||||||
|
if (bdata->image)
|
||||||
|
evas_object_pass_events_set(bdata->image, val);
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
_ecore_evas_show(Ecore_Evas *ee)
|
_ecore_evas_show(Ecore_Evas *ee)
|
||||||
{
|
{
|
||||||
|
@ -272,6 +283,7 @@ _ecore_evas_buffer_cb_mouse_in(void *data, Evas *e, Evas_Object *obj EINA_UNUSED
|
||||||
ee = data;
|
ee = data;
|
||||||
ev = event_info;
|
ev = event_info;
|
||||||
if (!ee->evas) return;
|
if (!ee->evas) return;
|
||||||
|
if (ee->ignore_events) return;
|
||||||
_ecore_evas_buffer_transfer_modifiers_locks(e, ee->evas);
|
_ecore_evas_buffer_transfer_modifiers_locks(e, ee->evas);
|
||||||
evas_event_feed_mouse_in(ee->evas, ev->timestamp, NULL);
|
evas_event_feed_mouse_in(ee->evas, ev->timestamp, NULL);
|
||||||
}
|
}
|
||||||
|
@ -285,6 +297,7 @@ _ecore_evas_buffer_cb_mouse_out(void *data, Evas *e, Evas_Object *obj EINA_UNUSE
|
||||||
ee = data;
|
ee = data;
|
||||||
ev = event_info;
|
ev = event_info;
|
||||||
if (!ee->evas) return;
|
if (!ee->evas) return;
|
||||||
|
if (ee->ignore_events) return;
|
||||||
_ecore_evas_buffer_transfer_modifiers_locks(e, ee->evas);
|
_ecore_evas_buffer_transfer_modifiers_locks(e, ee->evas);
|
||||||
evas_event_feed_mouse_out(ee->evas, ev->timestamp, NULL);
|
evas_event_feed_mouse_out(ee->evas, ev->timestamp, NULL);
|
||||||
}
|
}
|
||||||
|
@ -298,6 +311,7 @@ _ecore_evas_buffer_cb_mouse_down(void *data, Evas *e, Evas_Object *obj EINA_UNUS
|
||||||
ee = data;
|
ee = data;
|
||||||
ev = event_info;
|
ev = event_info;
|
||||||
if (!ee->evas) return;
|
if (!ee->evas) return;
|
||||||
|
if (ee->ignore_events) return;
|
||||||
_ecore_evas_buffer_transfer_modifiers_locks(e, ee->evas);
|
_ecore_evas_buffer_transfer_modifiers_locks(e, ee->evas);
|
||||||
evas_event_feed_mouse_down(ee->evas, ev->button, ev->flags, ev->timestamp, NULL);
|
evas_event_feed_mouse_down(ee->evas, ev->button, ev->flags, ev->timestamp, NULL);
|
||||||
}
|
}
|
||||||
|
@ -311,6 +325,7 @@ _ecore_evas_buffer_cb_mouse_up(void *data, Evas *e, Evas_Object *obj EINA_UNUSED
|
||||||
ee = data;
|
ee = data;
|
||||||
ev = event_info;
|
ev = event_info;
|
||||||
if (!ee->evas) return;
|
if (!ee->evas) return;
|
||||||
|
if (ee->ignore_events) return;
|
||||||
_ecore_evas_buffer_transfer_modifiers_locks(e, ee->evas);
|
_ecore_evas_buffer_transfer_modifiers_locks(e, ee->evas);
|
||||||
evas_event_feed_mouse_up(ee->evas, ev->button, ev->flags, ev->timestamp, NULL);
|
evas_event_feed_mouse_up(ee->evas, ev->button, ev->flags, ev->timestamp, NULL);
|
||||||
}
|
}
|
||||||
|
@ -341,6 +356,7 @@ _ecore_evas_buffer_cb_mouse_wheel(void *data, Evas *e, Evas_Object *obj EINA_UNU
|
||||||
ee = data;
|
ee = data;
|
||||||
ev = event_info;
|
ev = event_info;
|
||||||
if (!ee->evas) return;
|
if (!ee->evas) return;
|
||||||
|
if (ee->ignore_events) return;
|
||||||
_ecore_evas_buffer_transfer_modifiers_locks(e, ee->evas);
|
_ecore_evas_buffer_transfer_modifiers_locks(e, ee->evas);
|
||||||
evas_event_feed_mouse_wheel(ee->evas, ev->direction, ev->z, ev->timestamp, NULL);
|
evas_event_feed_mouse_wheel(ee->evas, ev->direction, ev->z, ev->timestamp, NULL);
|
||||||
}
|
}
|
||||||
|
@ -360,6 +376,7 @@ _ecore_evas_buffer_cb_multi_down(void *data, Evas *e, Evas_Object *obj EINA_UNUS
|
||||||
xx = x;
|
xx = x;
|
||||||
yy = y;
|
yy = y;
|
||||||
if (!ee->evas) return;
|
if (!ee->evas) return;
|
||||||
|
if (ee->ignore_events) return;
|
||||||
_ecore_evas_buffer_coord_translate(ee, &x, &y);
|
_ecore_evas_buffer_coord_translate(ee, &x, &y);
|
||||||
xf = (ev->canvas.xsub - (double)xx) + (double)x;
|
xf = (ev->canvas.xsub - (double)xx) + (double)x;
|
||||||
yf = (ev->canvas.ysub - (double)yy) + (double)y;
|
yf = (ev->canvas.ysub - (double)yy) + (double)y;
|
||||||
|
@ -382,6 +399,7 @@ _ecore_evas_buffer_cb_multi_up(void *data, Evas *e, Evas_Object *obj EINA_UNUSED
|
||||||
xx = x;
|
xx = x;
|
||||||
yy = y;
|
yy = y;
|
||||||
if (!ee->evas) return;
|
if (!ee->evas) return;
|
||||||
|
if (ee->ignore_events) return;
|
||||||
_ecore_evas_buffer_coord_translate(ee, &x, &y);
|
_ecore_evas_buffer_coord_translate(ee, &x, &y);
|
||||||
xf = (ev->canvas.xsub - (double)xx) + (double)x;
|
xf = (ev->canvas.xsub - (double)xx) + (double)x;
|
||||||
yf = (ev->canvas.ysub - (double)yy) + (double)y;
|
yf = (ev->canvas.ysub - (double)yy) + (double)y;
|
||||||
|
@ -404,6 +422,7 @@ _ecore_evas_buffer_cb_multi_move(void *data, Evas *e, Evas_Object *obj EINA_UNUS
|
||||||
xx = x;
|
xx = x;
|
||||||
yy = y;
|
yy = y;
|
||||||
if (!ee->evas) return;
|
if (!ee->evas) return;
|
||||||
|
if (ee->ignore_events) return;
|
||||||
_ecore_evas_buffer_coord_translate(ee, &x, &y);
|
_ecore_evas_buffer_coord_translate(ee, &x, &y);
|
||||||
xf = (ev->cur.canvas.xsub - (double)xx) + (double)x;
|
xf = (ev->cur.canvas.xsub - (double)xx) + (double)x;
|
||||||
yf = (ev->cur.canvas.ysub - (double)yy) + (double)y;
|
yf = (ev->cur.canvas.ysub - (double)yy) + (double)y;
|
||||||
|
@ -429,6 +448,7 @@ _ecore_evas_buffer_cb_key_down(void *data, Evas *e, Evas_Object *obj EINA_UNUSED
|
||||||
ee = data;
|
ee = data;
|
||||||
ev = event_info;
|
ev = event_info;
|
||||||
if (!ee->evas) return;
|
if (!ee->evas) return;
|
||||||
|
if (ee->ignore_events) return;
|
||||||
_ecore_evas_buffer_transfer_modifiers_locks(e, ee->evas);
|
_ecore_evas_buffer_transfer_modifiers_locks(e, ee->evas);
|
||||||
evas_event_feed_key_down(ee->evas, ev->keyname, ev->key, ev->string, ev->compose, ev->timestamp, NULL);
|
evas_event_feed_key_down(ee->evas, ev->keyname, ev->key, ev->string, ev->compose, ev->timestamp, NULL);
|
||||||
}
|
}
|
||||||
|
@ -442,6 +462,7 @@ _ecore_evas_buffer_cb_key_up(void *data, Evas *e, Evas_Object *obj EINA_UNUSED,
|
||||||
ee = data;
|
ee = data;
|
||||||
ev = event_info;
|
ev = event_info;
|
||||||
if (!ee->evas) return;
|
if (!ee->evas) return;
|
||||||
|
if (ee->ignore_events) return;
|
||||||
_ecore_evas_buffer_transfer_modifiers_locks(e, ee->evas);
|
_ecore_evas_buffer_transfer_modifiers_locks(e, ee->evas);
|
||||||
evas_event_feed_key_up(ee->evas, ev->keyname, ev->key, ev->string, ev->compose, ev->timestamp, NULL);
|
evas_event_feed_key_up(ee->evas, ev->keyname, ev->key, ev->string, ev->compose, ev->timestamp, NULL);
|
||||||
}
|
}
|
||||||
|
@ -589,7 +610,7 @@ _ecore_evas_buffer_pointer_warp(const Ecore_Evas *ee, Evas_Coord x, Evas_Coord y
|
||||||
|
|
||||||
if (bdata->image)
|
if (bdata->image)
|
||||||
_ecore_evas_mouse_move_process((Ecore_Evas*)ee, x, y, (unsigned int)((unsigned long long)(ecore_time_get() * 1000.0) & 0xffffffff));
|
_ecore_evas_mouse_move_process((Ecore_Evas*)ee, x, y, (unsigned int)((unsigned long long)(ecore_time_get() * 1000.0) & 0xffffffff));
|
||||||
else
|
else if (!ee->ignore_events)
|
||||||
{
|
{
|
||||||
Ecore_Event_Mouse_Move *ev;
|
Ecore_Event_Mouse_Move *ev;
|
||||||
|
|
||||||
|
@ -683,7 +704,7 @@ static Ecore_Evas_Engine_Func _ecore_buffer_engine_func =
|
||||||
NULL,
|
NULL,
|
||||||
NULL,
|
NULL,
|
||||||
NULL,
|
NULL,
|
||||||
NULL,
|
_ecore_evas_buffer_ignore_events_set,
|
||||||
_ecore_evas_buffer_alpha_set,
|
_ecore_evas_buffer_alpha_set,
|
||||||
NULL, //transparent
|
NULL, //transparent
|
||||||
NULL, // profiles_set
|
NULL, // profiles_set
|
||||||
|
|
Loading…
Reference in New Issue