From: Jean-Philippe Andre Date: Wed, 7 Jun 2017 05:53:08 +0000 (+0900) Subject: evas: Set locks and modifiers for all input events X-Git-Tag: upstream/1.20.0~744 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=6329111385ba534737ac8d01d6ec083a018a175a;p=platform%2Fupstream%2Fefl.git evas: Set locks and modifiers for all input events See also eb27724eb9c32a954c2f75b45307a207d0 which didn't fix the reported issue. Not quite sure yet how to implement those lock & modifiers for fake events (i.e. artificially created by the app itself). Fixes T5510 --- diff --git a/src/lib/evas/canvas/efl_input_key.c b/src/lib/evas/canvas/efl_input_key.c index f9d2f15..d4154ce 100644 --- a/src/lib/evas/canvas/efl_input_key.c +++ b/src/lib/evas/canvas/efl_input_key.c @@ -41,6 +41,7 @@ _efl_input_key_efl_input_event_instance_get(Eo *klass EINA_UNUSED, void *_pd EIN { Efl_Input_Key_Data *ev; Efl_Input_Key *evt; + Evas *evas; if (s_cached_event) { @@ -58,6 +59,14 @@ _efl_input_key_efl_input_event_instance_get(Eo *klass EINA_UNUSED, void *_pd EIN ev->fake = EINA_FALSE; if (priv) *priv = ev; + evas = efl_provider_find(owner, EVAS_CANVAS_CLASS); + if (evas) + { + Evas_Public_Data *e = efl_data_scope_get(evas, EVAS_CANVAS_CLASS); + ev->modifiers = &e->modifiers; + ev->locks = &e->locks; + } + return evt; } diff --git a/src/lib/evas/canvas/efl_input_pointer.c b/src/lib/evas/canvas/efl_input_pointer.c index 6354ecd1..01a20c1 100644 --- a/src/lib/evas/canvas/efl_input_pointer.c +++ b/src/lib/evas/canvas/efl_input_pointer.c @@ -48,10 +48,11 @@ _del_hook(Eo *evt) EOLIAN static Efl_Input_Pointer * _efl_input_pointer_efl_input_event_instance_get(Eo *klass EINA_UNUSED, void *_pd EINA_UNUSED, - Eo *owner, void **priv) + Eo *owner, void **priv) { Efl_Input_Pointer_Data *ev; Efl_Input_Pointer *evt; + Evas *evas; if (s_cached_event) { @@ -69,6 +70,14 @@ _efl_input_pointer_efl_input_event_instance_get(Eo *klass EINA_UNUSED, void *_pd ev->fake = EINA_FALSE; if (priv) *priv = ev; + evas = efl_provider_find(owner, EVAS_CANVAS_CLASS); + if (evas) + { + Evas_Public_Data *e = efl_data_scope_get(evas, EVAS_CANVAS_CLASS); + ev->modifiers = &e->modifiers; + ev->locks = &e->locks; + } + return evt; }