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
This commit is contained in:
Mike Blumenkrantz 2018-01-23 16:51:58 -05:00
parent 39c9ae8b73
commit 9a484d1b64
2 changed files with 14 additions and 1 deletions

View File

@ -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;
};

View File

@ -388,6 +388,16 @@ _e_comp_wl_input_state_update(void)
0, 0);
}
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)
{
@ -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;