jpeg pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=6329111385ba534737ac8d01d6ec083a018a175a

commit 6329111385ba534737ac8d01d6ec083a018a175a
Author: Jean-Philippe Andre <[email protected]>
Date:   Wed Jun 7 14:53:08 2017 +0900

    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
---
 src/lib/evas/canvas/efl_input_key.c     |  9 +++++++++
 src/lib/evas/canvas/efl_input_pointer.c | 11 ++++++++++-
 2 files changed, 19 insertions(+), 1 deletion(-)

diff --git a/src/lib/evas/canvas/efl_input_key.c 
b/src/lib/evas/canvas/efl_input_key.c
index f9d2f15021..d4154ce963 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 6354ecd1b3..01a20c1841 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;
 }
 

-- 


Reply via email to