]> Dogcows Code - chaz/openbox/blobdiff - openbox/screen.c
why did we pass thru owner events ?? its working without that.. hum..
[chaz/openbox] / openbox / screen.c
index 34943fa6049a291954fc12cd34d6d4b1cee4551c..5fc2bb9221390ecac63b6710d64a54dbfd578a67 100644 (file)
@@ -299,62 +299,55 @@ gboolean screen_annex(const gchar *program_name)
 
 void screen_startup(gboolean reconfig)
 {
+    guint i, numnames;
+    gchar **names;
     GSList *it;
-    guint i;
-
-    if (!reconfig)
-        /* get the initial size */
-        screen_resize();
+    guint32 d;
 
     desktop_cycle_popup = pager_popup_new(FALSE);
     pager_popup_height(desktop_cycle_popup, POPUP_HEIGHT);
 
-#if 0
-    /* get the names */
-    if (PROP_GETSS(RootWindow(ob_display, ob_screen),
-                   net_desktop_names, utf8, &screen_desktop_names))
-        for (i = 0; screen_desktop_names[i]; ++i);
-    else
-#endif
-        i = 0;
-    for (it = g_slist_nth(config_desktops_names, i); it;
-         it = g_slist_next(it), ++i)
-    {
-        screen_desktop_names = g_renew(gchar*, screen_desktop_names, i + 2);
-        screen_desktop_names[i] = g_strdup(it->data);
-        screen_desktop_names[i+1] = NULL;
-    }
-    /* then set the names */
-    PROP_SETSS(RootWindow(ob_display, ob_screen),
-               net_desktop_names, screen_desktop_names);
-    g_strfreev(screen_desktop_names);
-    screen_desktop_names = NULL;
+    if (reconfig)
+        return;
+
+    /* get the initial size */
+    screen_resize();
+
+    /* get the desktop names */
+    numnames = g_slist_length(config_desktops_names);
+    names = g_new(gchar*, numnames + 1);
+    names[numnames] = NULL;
+    for (i = 0, it = config_desktops_names; it; ++i, it = g_slist_next(it))
+        names[i] = g_strdup(it->data);
+
+    /* set the root window property */
+    PROP_SETSS(RootWindow(ob_display, ob_screen), net_desktop_names,names);
 
-    if (!reconfig)
-        screen_num_desktops = 0;
+    g_strfreev(names);
+
+    /* set the number of desktops */
+    screen_num_desktops = 0;
     screen_set_num_desktops(config_desktops_num);
-    if (!reconfig) {
-        guint32 d;
-        /* start on the current desktop when a wm was already running */
-        if (PROP_GET32(RootWindow(ob_display, ob_screen),
-                       net_current_desktop, cardinal, &d) &&
-            d < screen_num_desktops)
-        {
-            screen_set_desktop(d, FALSE);
-        } else if (session_desktop >= 0)
-            screen_set_desktop(MIN((guint)session_desktop,
-                                   screen_num_desktops), FALSE);
-        else
-            screen_set_desktop(MIN(config_screen_firstdesk,
-                                   screen_num_desktops) - 1, FALSE);
 
-        /* don't start in showing-desktop mode */
-        screen_showing_desktop = FALSE;
-        PROP_SET32(RootWindow(ob_display, ob_screen),
-                   net_showing_desktop, cardinal, screen_showing_desktop);
+    /* start on the current desktop when a wm was already running */
+    if (PROP_GET32(RootWindow(ob_display, ob_screen),
+                   net_current_desktop, cardinal, &d) &&
+        d < screen_num_desktops)
+    {
+        screen_set_desktop(d, FALSE);
+    } else if (session_desktop >= 0)
+        screen_set_desktop(MIN((guint)session_desktop,
+                               screen_num_desktops), FALSE);
+    else
+        screen_set_desktop(MIN(config_screen_firstdesk,
+                               screen_num_desktops) - 1, FALSE);
 
-        screen_update_layout();
-    }
+    /* don't start in showing-desktop mode */
+    screen_showing_desktop = FALSE;
+    PROP_SET32(RootWindow(ob_display, ob_screen),
+               net_showing_desktop, cardinal, screen_showing_desktop);
+
+    screen_update_layout();
 }
 
 void screen_shutdown(gboolean reconfig)
@@ -363,22 +356,24 @@ void screen_shutdown(gboolean reconfig)
 
     pager_popup_free(desktop_cycle_popup);
 
-    if (!reconfig) {
-        XSelectInput(ob_display, RootWindow(ob_display, ob_screen),
-                     NoEventMask);
+    if (reconfig)
+        return;
 
-        /* we're not running here no more! */
-        PROP_ERASE(RootWindow(ob_display, ob_screen), openbox_pid);
-        /* not without us */
-        PROP_ERASE(RootWindow(ob_display, ob_screen), net_supported);
-        /* don't keep this mode */
-        PROP_ERASE(RootWindow(ob_display, ob_screen), net_showing_desktop);
+    XSelectInput(ob_display, RootWindow(ob_display, ob_screen),
+                 NoEventMask);
 
-        XDestroyWindow(ob_display, screen_support_win);
-    }
+    /* we're not running here no more! */
+    PROP_ERASE(RootWindow(ob_display, ob_screen), openbox_pid);
+    /* not without us */
+    PROP_ERASE(RootWindow(ob_display, ob_screen), net_supported);
+    /* don't keep this mode */
+    PROP_ERASE(RootWindow(ob_display, ob_screen), net_showing_desktop);
+
+    XDestroyWindow(ob_display, screen_support_win);
 
     g_strfreev(screen_desktop_names);
     screen_desktop_names = NULL;
+
     for (r = area; *r; ++r)
         g_free(*r);
     g_free(area);
@@ -883,11 +878,11 @@ void screen_update_desktop_names()
         for (i = 0; screen_desktop_names[i] && i < screen_num_desktops; ++i);
     else
         i = 0;
-    if (i < screen_num_desktops - 1) {
+    if (i < screen_num_desktops) {
         screen_desktop_names = g_renew(gchar*, screen_desktop_names,
                                        screen_num_desktops + 1);
         screen_desktop_names[screen_num_desktops] = NULL;
-        for (; i < screen_num_desktops - 1; ++i)
+        for (; i < screen_num_desktops; ++i)
             screen_desktop_names[i] = g_strdup_printf("desktop %i", i + 1);
     }
 
This page took 0.028045 seconds and 4 git commands to generate.