diff options
author | Mike Blumenkrantz <zmike@osg.samsung.com> | 2018-01-23 16:51:58 -0500 |
---|---|---|
committer | Mike Blumenkrantz <zmike@osg.samsung.com> | 2018-01-24 16:18:57 -0500 |
commit | 9a484d1b64077905e1c6cbae656f8444feedfe33 (patch) | |
tree | 3ac65c328e67c2a94a6486dd5bd87a1411675dfc | |
parent | 39c9ae8b73e22b38491847e3cf5a410132d1e773 (diff) | |
download | enlightenment-9a484d1b64077905e1c6cbae656f8444feedfe33.tar.gz |
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
-rw-r--r-- | src/bin/e_comp_wl.h | 2 | ||||
-rw-r--r-- | src/bin/e_comp_wl_input.c | 13 |
2 files changed, 14 insertions, 1 deletions
diff --git a/src/bin/e_comp_wl.h b/src/bin/e_comp_wl.h index 406a85d97a..11bc1ff889 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 e9f1bd385c..0874cb1708 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; |