bdilly pushed a commit to branch master.

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

commit e0170c2b0dbadb98d8e3c9f831b88764f1f8aa26
Author: Bruno Dilly <[email protected]>
Date:   Thu Mar 23 19:00:44 2017 -0300

    evas_events: look for seats on hash instead of input devices
    
    Summary:
    Otherwise it won't ever find the modifier masks.
    
    Fixes T5146
    
    @fix
    
    Reviewers: iscaro, Jaehyun_Cho
    
    Subscribers: cedric, jpeg
    
    Maniphest Tasks: T5146
    
    Differential Revision: https://phab.enlightenment.org/D4738
---
 src/lib/evas/canvas/evas_events.c | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/src/lib/evas/canvas/evas_events.c 
b/src/lib/evas/canvas/evas_events.c
index 82c6dd7..cfaee6e 100644
--- a/src/lib/evas/canvas/evas_events.c
+++ b/src/lib/evas/canvas/evas_events.c
@@ -3110,9 +3110,12 @@ _canvas_event_feed_key_down_internal(Evas_Public_Data 
*e, Efl_Input_Key_Data *ev
         Eina_List *l;
         Evas_Key_Grab *g;
         Evas_Modifier_Mask *seat_mask, modifier_mask;
+        Efl_Input_Device *seat = NULL;
 
         e->walking_grabs++;
-        seat_mask = eina_hash_find(e->modifiers.masks, &ev->device);
+        if (ev->device)
+          seat = efl_input_device_seat_get(ev->device);
+        seat_mask = eina_hash_find(e->modifiers.masks, &seat);
         modifier_mask = seat_mask ? *seat_mask : 0;
         EINA_LIST_FOREACH(e->grabs, l, g)
           {
@@ -3200,9 +3203,12 @@ _canvas_event_feed_key_up_internal(Evas_Public_Data *e, 
Efl_Input_Key_Data *ev)
         Eina_List *l;
         Evas_Key_Grab *g;
         Evas_Modifier_Mask *seat_mask, modifier_mask;
+        Efl_Input_Device *seat = NULL;
 
         e->walking_grabs++;
-        seat_mask = eina_hash_find(e->modifiers.masks, &ev->device);
+        if (ev->device)
+          seat = efl_input_device_seat_get(ev->device);
+        seat_mask = eina_hash_find(e->modifiers.masks, &seat);
         modifier_mask = seat_mask ? *seat_mask : 0;
         EINA_LIST_FOREACH(e->grabs, l, g)
           {

-- 


Reply via email to