discomfitor pushed a commit to branch master.

http://git.enlightenment.org/core/enlightenment.git/commit/?id=9a484d1b64077905e1c6cbae656f8444feedfe33

commit 9a484d1b64077905e1c6cbae656f8444feedfe33
Author: Mike Blumenkrantz <[email protected]>
Date:   Tue Jan 23 16:51:58 2018 -0500

    add generic handling for passing xkb objects to efl-wl objects under wayland
    
    ensure that keymaps are effectively propagated to efl-wl clients and that 
key
    presses are always propagated
---
 src/bin/e_comp_wl.h       |  2 ++
 src/bin/e_comp_wl_input.c | 13 ++++++++++++-
 2 files changed, 14 insertions(+), 1 deletion(-)

diff --git a/src/bin/e_comp_wl.h b/src/bin/e_comp_wl.h
index 406a85d97..11bc1ff88 100644
--- a/src/bin/e_comp_wl.h
+++ b/src/bin/e_comp_wl.h
@@ -285,6 +285,8 @@ struct _E_Comp_Wl_Data
    E_Client *drag_client;
    void *drag_source;
 
+   Eina_List *efl_wls;
+
    Eina_Bool dmabuf_disable E_BITFIELD;
    Eina_Bool dmabuf_proxy E_BITFIELD;
 };
diff --git a/src/bin/e_comp_wl_input.c b/src/bin/e_comp_wl_input.c
index e9f1bd385..0874cb170 100644
--- a/src/bin/e_comp_wl_input.c
+++ b/src/bin/e_comp_wl_input.c
@@ -389,6 +389,16 @@ _e_comp_wl_input_state_update(void)
 }
 
 static void
+nested_keymap_update(void)
+{
+   Eina_List *l;
+   Evas_Object *obj;
+
+   EINA_LIST_FOREACH(e_comp_wl->efl_wls, l, obj)
+     efl_wl_seat_keymap_set(obj, NULL, e_comp_wl->xkb.state, 
e_comp_wl->xkb.fd, e_comp_wl->xkb.size, &e_comp_wl->kbd.keys);
+}
+
+static void
 _e_comp_wl_input_keymap_update(struct xkb_keymap *keymap)
 {
    char *tmp;
@@ -447,6 +457,7 @@ _e_comp_wl_input_keymap_update(struct xkb_keymap *keymap)
 
    /* update modifiers */
    e_comp_wl_input_keyboard_modifiers_update();
+   nested_keymap_update();
 }
 
 EINTERN Eina_Bool
@@ -715,7 +726,7 @@ e_comp_wl_input_keymap_index_set(xkb_layout_index_t index)
         e_comp_wl->kbd.choosen_group = index;
         _e_comp_wl_input_state_update();
         e_comp_wl_input_keyboard_modifiers_update();
-
+        nested_keymap_update();
      }
    else
      choosen_group = index;

-- 


Reply via email to