forked from enlightenment/enlightenment
next/prev xkb layout switch actions now properly set the current/selected kbd layout name
SVN revision: 77369
This commit is contained in:
parent
0f5cd63f5a
commit
0521c799fa
|
@ -112,9 +112,18 @@ e_xkb_update(int cur_group)
|
|||
EAPI void
|
||||
e_xkb_layout_next(void)
|
||||
{
|
||||
int nb_groups = eina_list_count(e_config->xkb.used_layouts);
|
||||
Eina_List *l;
|
||||
E_Config_XKB_Layout *cl;
|
||||
|
||||
e_config->xkb.cur_group = (e_config->xkb.cur_group + 1) % nb_groups;
|
||||
l = eina_list_nth_list(e_config->xkb.used_layouts, e_config->xkb.cur_group);
|
||||
l = eina_list_next(l);
|
||||
if (!l) l = e_config->xkb.used_layouts;
|
||||
|
||||
e_config->xkb.cur_group = (e_config->xkb.cur_group + 1) % eina_list_count(e_config->xkb.used_layouts);
|
||||
cl = eina_list_data_get(l);
|
||||
eina_stringshare_replace(&e_config->xkb.cur_layout, cl->name);
|
||||
eina_stringshare_replace(&e_config->xkb.selected_layout, cl->name);
|
||||
INF("Setting keyboard layout: %s", cl->name);
|
||||
e_xkb_update(e_config->xkb.cur_group);
|
||||
_e_xkb_update_event(e_config->xkb.cur_group);
|
||||
e_config_save_queue();
|
||||
|
@ -123,10 +132,19 @@ e_xkb_layout_next(void)
|
|||
EAPI void
|
||||
e_xkb_layout_prev(void)
|
||||
{
|
||||
int nb_groups = eina_list_count(e_config->xkb.used_layouts);
|
||||
Eina_List *l;
|
||||
E_Config_XKB_Layout *cl;
|
||||
|
||||
l = eina_list_nth_list(e_config->xkb.used_layouts, e_config->xkb.cur_group);
|
||||
l = eina_list_prev(l);
|
||||
if (!l) l = eina_list_last(e_config->xkb.used_layouts);
|
||||
|
||||
e_config->xkb.cur_group = (e_config->xkb.cur_group == 0) ?
|
||||
(nb_groups - 1) : (e_config->xkb.cur_group - 1);
|
||||
((int)eina_list_count(e_config->xkb.used_layouts) - 1) : (e_config->xkb.cur_group - 1);
|
||||
cl = eina_list_data_get(l);
|
||||
eina_stringshare_replace(&e_config->xkb.cur_layout, cl->name);
|
||||
eina_stringshare_replace(&e_config->xkb.selected_layout, cl->name);
|
||||
INF("Setting keyboard layout: %s", cl->name);
|
||||
e_xkb_update(e_config->xkb.cur_group);
|
||||
_e_xkb_update_event(e_config->xkb.cur_group);
|
||||
e_config_save_queue();
|
||||
|
|
Loading…
Reference in New Issue