summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Blumenkrantz <zmike@osg.samsung.com>2018-01-23 16:51:58 -0500
committerMike Blumenkrantz <zmike@osg.samsung.com>2018-01-24 16:18:57 -0500
commit9a484d1b64077905e1c6cbae656f8444feedfe33 (patch)
tree3ac65c328e67c2a94a6486dd5bd87a1411675dfc
parent39c9ae8b73e22b38491847e3cf5a410132d1e773 (diff)
downloadenlightenment-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.h2
-rw-r--r--src/bin/e_comp_wl_input.c13
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;