add a RECONFIGURING state, and enter that when doing reconfiguring
[mikachu/openbox.git] / openbox / screen.c
index 5201f78..15b3c8d 100644 (file)
@@ -56,20 +56,20 @@ static gboolean replace_wm(void);
 static void     screen_tell_ksplash(void);
 static void     screen_fallback_focus(void);
 
-guint    screen_num_desktops;
-guint    screen_num_monitors;
-guint    screen_desktop;
-guint    screen_last_desktop;
-gboolean screen_showing_desktop;
+guint           screen_num_desktops;
+guint           screen_num_monitors;
+guint           screen_desktop;
+guint           screen_last_desktop;
+gboolean        screen_showing_desktop;
 ObDesktopLayout screen_desktop_layout;
-gchar  **screen_desktop_names;
-Window   screen_support_win;
-Time     screen_desktop_user_time = CurrentTime;
+gchar         **screen_desktop_names;
+Window          screen_support_win;
+Time            screen_desktop_user_time = CurrentTime;
 
 static Size     screen_physical_size;
 static guint    screen_old_desktop;
 static gboolean screen_desktop_timeout = TRUE;
-/*! An array of desktops, holding array of areas per monitor */
+/*! An array of desktops, holding an array of areas per monitor */
 static Rect  *monitor_area = NULL;
 /*! An array of desktops, holding an array of struts */
 static GSList *struts_top = NULL;
@@ -340,7 +340,7 @@ static void screen_tell_ksplash(void)
     e.xclient.display = ob_display;
     e.xclient.window = RootWindow(ob_display, ob_screen);
     e.xclient.message_type =
-        XInternAtom(ob_display, "_KDE_SPLASH_PROGRESS", False );
+        XInternAtom(ob_display, "_KDE_SPLASH_PROGRESS", False);
     e.xclient.format = 8;
     strcpy(e.xclient.data.b, "wm started");
     XSendEvent(ob_display, RootWindow(ob_display, ob_screen),
@@ -405,6 +405,10 @@ void screen_startup(gboolean reconfig)
                    net_number_of_desktops, cardinal, &d))
     {
         if (d != config_desktops_num) {
+            /* TRANSLATORS: If you need to specify a different order of the
+               arguments, you can use %1$d for the first one and %2$d for the
+               second one. For example,
+               "The current session has %2$d desktops, but Openbox is configured for %1$d ..." */
             g_warning(_("Openbox is configured for %d desktops, but the current session has %d.  Overriding the Openbox configuration."),
                       config_desktops_num, d);
         }
@@ -488,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();
@@ -538,12 +542,13 @@ void screen_set_num_desktops(guint num)
                 stacking_raise(CLIENT_AS_WINDOW(c));
         }
     }
+    g_list_free(stacking_copy);
 
     /* change our struts/area to match (after moving windows) */
     screen_update_areas();
 
     /* may be some unnamed desktops that we need to fill in with names
-     (after updating the areas so the popup can resize) */
+       (after updating the areas so the popup can resize) */
     screen_update_desktop_names();
 
     /* change our desktop if we're on one that no longer exists! */
@@ -684,6 +689,9 @@ void screen_set_desktop(guint num, gboolean dofocus)
 
     ob_debug("Moving to desktop %d\n", num+1);
 
+    if (ob_state() == OB_STATE_RUNNING)
+        screen_show_desktop_popup(screen_desktop);
+
     /* ignore enter events caused by the move */
     ignore_start = event_start_ignore_all_enters();
 
@@ -714,9 +722,6 @@ void screen_set_desktop(guint num, gboolean dofocus)
 
     if (event_curtime != CurrentTime)
         screen_desktop_user_time = event_curtime;
-
-    if (ob_state() == OB_STATE_RUNNING)
-        screen_show_desktop_popup(screen_desktop);
 }
 
 void screen_add_desktop(gboolean current)
@@ -794,6 +799,7 @@ void screen_remove_desktop(gboolean current)
             }
         }
     }
+    g_list_free(stacking_copy);
 
     /* fallback focus like we're changing desktops */
     if (screen_desktop < screen_num_desktops - 1) {