This is an automated email from the git hooks/post-receive script.
git pushed a commit to branch v-1.26.0
in repository efl.
View the commit online.
commit 2cb411c4c82e6e141ef93859019bd3d78622e4c8
Author: Carsten Haitzler <[email protected]>
AuthorDate: Thu Mar 24 17:34:58 2022 +0000
ecore-x - in order to only handle "new kbds" instead of maps add ev info
als flag in the xkb event to look at in this case. this allows for
fixes in e to not redo kbd layout when xmodmap changes modmap
@feat
---
src/lib/ecore_x/Ecore_X.h | 7 ++++---
src/lib/ecore_x/ecore_x_events.c | 17 ++++++++---------
2 files changed, 12 insertions(+), 12 deletions(-)
diff --git a/src/lib/ecore_x/Ecore_X.h b/src/lib/ecore_x/Ecore_X.h
index 9dced7f381..cbccd1047d 100644
--- a/src/lib/ecore_x/Ecore_X.h
+++ b/src/lib/ecore_x/Ecore_X.h
@@ -2530,10 +2530,11 @@ struct _Ecore_X_Event_Xkb
int base_group; /** @since 1.21 */
int latched_group; /** @since 1.21 */
int locked_group; /** @since 1.21 */
- unsigned int mods; /** @since 1.21 */
+ unsigned int mods; /** @since 1.21 */
unsigned int base_mods; /** @since 1.21 */
- unsigned int latched_mods; /** @since 1.21 */
- unsigned int locked_mods; /** @since 1.21 */
+ unsigned int latched_mods; /** @since 1.21 */
+ unsigned int locked_mods; /** @since 1.21 */
+ Eina_Bool map_notify; /** @since 1.27 */
};
typedef struct _Ecore_X_Event_Xkb Ecore_X_Event_Xkb; /** @since 1.7 */
typedef struct _Ecore_X_Event_Xkb Ecore_X_Xkb_State; /** @since 1.21 */
diff --git a/src/lib/ecore_x/ecore_x_events.c b/src/lib/ecore_x/ecore_x_events.c
index 3b2f47ce61..5e6a201f36 100644
--- a/src/lib/ecore_x/ecore_x_events.c
+++ b/src/lib/ecore_x/ecore_x_events.c
@@ -2479,20 +2479,15 @@ free_hash(void *data, void *ev)
void
_ecore_x_event_handle_xkb(XEvent *xevent)
{
- XkbEvent *xkbev;
-
- xkbev = (XkbEvent *) xevent;
-
+ XkbEvent *xkbev = (XkbEvent *)xevent;
+ Ecore_X_Event_Xkb *e;
if (xkbev->any.xkb_type == XkbStateNotify)
{
- Ecore_X_Event_Xkb *e;
-
if (eina_hash_find(emitted_events, &xkbev->state.serial)) return;
e = calloc(1, sizeof(Ecore_X_Event_Xkb));
- if (!e)
- return;
+ if (!e) return;
e->group = xkbev->state.group;
e->base_group = xkbev->state.base_group;
@@ -2512,6 +2507,9 @@ _ecore_x_event_handle_xkb(XEvent *xevent)
{
if (eina_hash_find(emitted_events, &xkbev->state.serial)) return;
+ e = calloc(1, sizeof(Ecore_X_Event_Xkb));
+ if (!e) return;
+
if (xkbev->any.xkb_type == XkbMapNotify)
{
XkbMapNotifyEvent *xkbmapping = (XkbMapNotifyEvent *)xkbev;
@@ -2524,13 +2522,14 @@ _ecore_x_event_handle_xkb(XEvent *xevent)
_ecore_x_modifiers_get();
_ecore_x_window_grab_resume();
_ecore_x_key_grab_resume();
+ e->map_notify = EINA_TRUE;
}
else
{
XkbNewKeyboardNotifyEvent *xkbnkn = (void*)xkbev;
if (!(xkbnkn->changed & XkbNKN_KeycodesMask)) return;
}
- ecore_event_add(ECORE_X_EVENT_XKB_NEWKBD_NOTIFY, NULL, free_hash,
+ ecore_event_add(ECORE_X_EVENT_XKB_NEWKBD_NOTIFY, e, free_hash,
(void *)(intptr_t)xkbev->new_kbd.serial);
eina_hash_add(emitted_events, &xkbev->new_kbd.serial, (void *)1);
}
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.