add a RECONFIGURING state, and enter that when doing reconfiguring
authorDana Jansens <danakj@orodu.net>
Sun, 2 Mar 2008 20:37:07 +0000 (15:37 -0500)
committerDana Jansens <danakj@orodu.net>
Sun, 2 Mar 2008 20:40:11 +0000 (15:40 -0500)
openbox/event.c
openbox/misc.h
openbox/openbox.c
openbox/openbox.h
openbox/screen.c

index 5c4700a..a7f65fc 100644 (file)
@@ -652,9 +652,11 @@ static void event_process(const XEvent *ec, gpointer data)
         /* keyboard layout changes for modifier mapping changes. reload the
            modifier map, and rebind all the key bindings as appropriate */
         ob_debug("Kepboard map changed. Reloading keyboard bindings.\n");
+        ob_set_state(OB_STATE_RECONFIGURING);
         modkeys_shutdown(TRUE);
         modkeys_startup(TRUE);
         keyboard_rebind();
+        ob_set_state(OB_STATE_RUNNING);
     }
     else if (e->type == ClientMessage) {
         /* This is for _NET_WM_REQUEST_FRAME_EXTENTS messages. They come for
index c73c926..c1ec407 100644 (file)
@@ -60,7 +60,8 @@ typedef enum
 {
     OB_STATE_STARTING,
     OB_STATE_RUNNING,
-    OB_STATE_EXITING
+    OB_STATE_EXITING,
+    OB_STATE_RECONFIGURING
 } ObState;
 
 typedef enum
index fb1e75d..eb7934e 100644 (file)
@@ -121,7 +121,7 @@ gint main(gint argc, gchar **argv)
 {
     gchar *program_name;
 
-    state = OB_STATE_STARTING;
+    ob_set_state(OB_STATE_STARTING);
 
     /* initialize the locale */
     if (!setlocale(LC_ALL, ""))
@@ -367,9 +367,10 @@ gint main(gint argc, gchar **argv)
 
             reconfigure = FALSE;
 
-            state = OB_STATE_RUNNING;
+            ob_set_state(OB_STATE_RUNNING);
             ob_main_loop_run(ob_main_loop);
-            state = OB_STATE_EXITING;
+            ob_set_state(reconfigure ?
+                         OB_STATE_RECONFIGURING : OB_STATE_EXITING);
 
             if (!reconfigure) {
                 dock_remove_all();
@@ -709,3 +710,8 @@ ObState ob_state()
 {
     return state;
 }
+
+void ob_set_state(ObState s)
+{
+    state = s;
+}
index 4f2310f..06d3829 100644 (file)
@@ -52,6 +52,7 @@ extern gboolean ob_debug_xinerama;
 
 /* The state of execution of the window manager */
 ObState ob_state();
+void ob_set_state(ObState state);
 
 void ob_restart_other(const gchar *path);
 void ob_restart();
index 2e48f85..15b3c8d 100644 (file)
@@ -492,7 +492,7 @@ void screen_resize(void)
     PROP_SETA32(RootWindow(ob_display, ob_screen),
                 net_desktop_geometry, cardinal, geometry, 2);
 
-    if (ob_state() == OB_STATE_STARTING)
+    if (ob_state() != OB_STATE_RUNNING)
         return;
 
     screen_update_areas();