have obt refresh the xlib keyboard stuff on mappingnotify events
authorDana Jansens <danakj@orodu.net>
Fri, 12 Feb 2010 18:31:49 +0000 (13:31 -0500)
committerDana Jansens <danakj@orodu.net>
Fri, 12 Feb 2010 18:31:49 +0000 (13:31 -0500)
obt/mainloop.c
openbox/event.c

index bf866ae..ebc9e96 100644 (file)
@@ -300,6 +300,9 @@ void obt_main_loop_run(ObtMainLoop *loop)
             do {
                 XNextEvent(loop->display, &e);
 
             do {
                 XNextEvent(loop->display, &e);
 
+                if (e.type == MappingNotify)
+                    XRefreshKeyboardMapping(&e.xmapping);
+
                 for (it = loop->x_handlers; it; it = g_slist_next(it)) {
                     ObtMainLoopXHandlerType *h = it->data;
                     h->func(&e, h->data);
                 for (it = loop->x_handlers; it; it = g_slist_next(it)) {
                     ObtMainLoopXHandlerType *h = it->data;
                     h->func(&e, h->data);
index 13fd311..44a90f9 100644 (file)
@@ -638,7 +638,6 @@ static void event_process(const XEvent *ec, gpointer data)
            modifier map, and rebind all the key bindings as appropriate */
         ob_debug("Keyboard map changed. Reloading keyboard bindings.");
         ob_set_state(OB_STATE_RECONFIGURING);
            modifier map, and rebind all the key bindings as appropriate */
         ob_debug("Keyboard map changed. Reloading keyboard bindings.");
         ob_set_state(OB_STATE_RECONFIGURING);
-        XRefreshKeyboardMapping(&e->xmapping);
         obt_keyboard_reload();
         keyboard_rebind();
         ob_set_state(OB_STATE_RUNNING);
         obt_keyboard_reload();
         keyboard_rebind();
         ob_set_state(OB_STATE_RUNNING);