]> Dogcows Code - chaz/openbox/blobdiff - openbox/event.c
reconfigure openbox when the input mapping changes, eg. keyboard layout or modifier map
[chaz/openbox] / openbox / event.c
index eb6786501a7adc078fee3102661f6d3c075f0c47..41bcd350b3b9cfd01fba02dda297b06546f62c45 100644 (file)
@@ -619,6 +619,11 @@ static void event_process(const XEvent *ec, gpointer data)
         event_handle_root(e);
     else if (e->type == MapRequest)
         client_manage(window);
+    else if (e->type == MappingNotify) {
+        /* keyboard layout changes, reconfigure openbox. need to restart the
+           modkeys system, but also to reload the key bindings. */
+        ob_reconfigure();
+    }
     else if (e->type == ClientMessage) {
         /* This is for _NET_WM_REQUEST_FRAME_EXTENTS messages. They come for
            windows that are not managed yet. */
@@ -718,6 +723,8 @@ static void event_handle_root(XEvent *e)
                 ob_reconfigure();
             else if (e->xclient.data.l[0] == 2)
                 ob_restart();
+            else if (e->xclient.data.l[0] == 3)
+                ob_exit(0);
         }
         break;
     case PropertyNotify:
@@ -1579,7 +1586,7 @@ static void event_handle_dockapp(ObDockApp *app, XEvent *e)
     }
 }
 
-static ObMenuFrame* find_active_menu()
+static ObMenuFrame* find_active_menu(void)
 {
     GList *it;
     ObMenuFrame *ret = NULL;
@@ -1593,7 +1600,7 @@ static ObMenuFrame* find_active_menu()
     return ret;
 }
 
-static ObMenuFrame* find_active_or_last_menu()
+static ObMenuFrame* find_active_or_last_menu(void)
 {
     ObMenuFrame *ret = NULL;
 
@@ -1857,14 +1864,14 @@ static void focus_delay_client_dest(ObClient *client, gpointer data)
                                      client, FALSE);
 }
 
-void event_halt_focus_delay()
+void event_halt_focus_delay(void)
 {
     /* ignore all enter events up till now */
     event_end_ignore_all_enters(1);
     ob_main_loop_timeout_remove(ob_main_loop, focus_delay_func);
 }
 
-gulong event_start_ignore_all_enters()
+gulong event_start_ignore_all_enters(void)
 {
     XSync(ob_display, FALSE);
     return LastKnownRequestProcessed(ob_display);
@@ -1911,7 +1918,7 @@ static gboolean is_enter_focus_event_ignored(XEvent *e)
     return FALSE;
 }
 
-void event_cancel_all_key_grabs()
+void event_cancel_all_key_grabs(void)
 {
     if (actions_interactive_act_running()) {
         actions_interactive_cancel_act();
@@ -1958,7 +1965,7 @@ gboolean event_time_after(Time t1, Time t2)
         return t1 >= t2 && t1 < (t2 + TIME_HALF);
 }
 
-Time event_get_server_time()
+Time event_get_server_time(void)
 {
     /* Generate a timestamp */
     XEvent event;
This page took 0.027377 seconds and 4 git commands to generate.