]> Dogcows Code - chaz/openbox/blobdiff - openbox/openbox.c
add NUM_STACKLAYER, fix some comments that dont apply
[chaz/openbox] / openbox / openbox.c
index 10970820123f32c288bfcda205ab91812039b2e2..e4aae9e8969cd2be3cd5900380202baaf59a9bf2 100644 (file)
@@ -49,6 +49,7 @@
 #include <X11/cursorfont.h>
 
 #ifdef USE_SM
+gboolean    ob_sm_use = TRUE;
 SmcConn     ob_sm_conn;
 gchar      *ob_sm_id = NULL;
 #endif
@@ -193,12 +194,14 @@ int main(int argc, char **argv)
        timer_startup();
        event_startup();
         grab_startup();
+        window_startup();
         plugin_startup();
         /* load the plugins specified in the pluginrc */
         plugin_loadall();
 
         /* set up the kernel config shit */
         config_startup();
+        menu_startup();
         /* parse/load user options */
         if (parse_load_rc(&doc, &node))
             parse_tree(doc, node->xmlChildrenNode, NULL);
@@ -210,8 +213,6 @@ int main(int argc, char **argv)
         if (ob_rr_theme == NULL)
             exit_with_error("Unable to load a theme.");
 
-        window_startup();
-        menu_startup();
         frame_startup();
         moveresize_startup();
        focus_startup();
@@ -329,7 +330,7 @@ static void sm_startup(int argc, char **argv)
         SmProp *props[7];
         gulong hint, pri;
         gchar pid[32];
-        gint i;
+        gint i, j;
         gboolean has_id;
 
         for (i = 1; i < argc - 1; ++i)
@@ -339,27 +340,29 @@ static void sm_startup(int argc, char **argv)
 
         prop_cmd.vals = g_new(SmPropValue, (has_id ? argc-2 : argc));
         prop_cmd.num_vals = (has_id ? argc-2 : argc);
-        for (i = 0; i < argc; ++i) {
+        for (i = 0, j = 0; i < argc; ++i, ++j) {
             if (strcmp (argv[i], "-sm-client-id") == 0) {
-                ++i; /* skip the next as well */
+                ++i, --j; /* skip the next as well, keep j where it is */
             } else {
-                prop_cmd.vals[i].value = argv[i];
-                prop_cmd.vals[i].length = strlen(argv[i]);
+                prop_cmd.vals[j].value = argv[i];
+                prop_cmd.vals[j].length = strlen(argv[i]);
             }
         }
 
         prop_res.vals = g_new(SmPropValue, (has_id ? argc : argc+2));
         prop_res.num_vals = (has_id ? argc : argc+2);
-        for (i = 0; i < argc; ++i) {
-            prop_res.vals[i].value = argv[i];
-            prop_res.vals[i].length = strlen(argv[i]);
-        }
-        if (!has_id) {
-            prop_res.vals[i].value = "-sm-client-id";
-            prop_res.vals[i++].length = strlen("-sm-client-id");
-            prop_res.vals[i].value = ob_sm_id;
-            prop_res.vals[i++].length = strlen(ob_sm_id);
+        for (i = 0, j = 0; i < argc; ++i, ++j) { 
+            if (strcmp (argv[i], "-sm-client-id") == 0) {
+                ++i, --j; /* skip the next as well, keep j where it is */
+            } else {
+                prop_res.vals[j].value = argv[i];
+                prop_res.vals[j].length = strlen(argv[i]);
+            }
         }
+        prop_res.vals[j].value = "-sm-client-id";
+        prop_res.vals[j++].length = strlen("-sm-client-id");
+        prop_res.vals[j].value = ob_sm_id;
+        prop_res.vals[j++].length = strlen(ob_sm_id);
 
         val_prog.value = argv[0];
         val_prog.length = strlen(argv[0]);
@@ -471,7 +474,8 @@ static void print_help()
     g_print("Options:\n\n");
     g_print("  -rc PATH          Specify the path to the rc file to use\n");
 #ifdef USE_SM
-    g_print("  -sm-client-id ID  Specify the session manager ID\n");
+    g_print("  -sm-client-id ID  Specify session management ID\n");
+    g_print("  -sm-disable       Disable connection to session manager\n");
 #endif
     g_print("  -help             Display this help and exit\n");
     g_print("  -version          Display the version and exit\n");
@@ -504,6 +508,8 @@ static void parse_args(int argc, char **argv)
                 g_printerr(_("-sm-client-id requires an argument\n"));
             else
                 ob_sm_id = argv[++i];
+        } else if (!strcmp(argv[i], "-sm-disable")) {
+            ob_sm_use = FALSE;
 #endif
         } else {
             g_printerr("Invalid option: '%s'\n\n", argv[i]);
This page took 0.023804 seconds and 4 git commands to generate.