]> Dogcows Code - chaz/openbox/blobdiff - openbox/config.c
fix3
[chaz/openbox] / openbox / config.c
index 78a8ed5416d9f5bf72d9e83f08edbf893c40b9c0..dd8d2b830b9314d6f570c20a0b8353117e45cd35 100644 (file)
@@ -117,61 +117,66 @@ static void parse_per_app_settings(ObParseInst *i, xmlDocPtr doc,
     xmlNodePtr app = parse_find_node("application", node->children);
     gchar *name;
 
-
     while (app) {
+        gboolean x_pos_given = FALSE;
         if (parse_attr_string("name", app, &name)) {
             xmlNodePtr n, c;
-            ObAppSetting *setting = g_new0(ObAppSetting, 1);
-            setting->name = name;
+            ObAppSettings *settings = g_new0(ObAppSetting, 1);
+            settings->name = name;
 
-            setting->decor = TRUE;
+            settings->decor = TRUE;
             if ((n = parse_find_node("decor", app->children)))
-                setting->decor = parse_bool(doc, n);
+                settings->decor = parse_bool(doc, n);
 
             if ((n = parse_find_node("shade", app->children)))
-                setting->shade = parse_bool(doc, n);
+                settings->shade = parse_bool(doc, n);
 
-            setting->position.x = setting->position.y = -1;
+            settings->position.x = settings->position.y = 0;
+            settings->pos_given = FALSE;
             if ((n = parse_find_node("position", app->children))) {
                 if ((c = parse_find_node("x", n->children))) {
                     if (!strcmp(parse_string(doc, c), "center")) {
-                        setting->center_x = TRUE;
+                        settings->center_x = TRUE;
+                        x_pos_given = TRUE;
+                    } else {
+                        settings->position.x = parse_int(doc, c);
+                        x_pos_given = TRUE;
                     }
-                    else
-                        setting->position.x = parse_int(doc, c);
                 }
 
-                if ((c = parse_find_node("y", n->children))) {
+                if (x_pos_given && (c = parse_find_node("y", n->children))) {
                     if (!strcmp(parse_string(doc, c), "center")) {
-                        setting->center_y = TRUE;
+                        settings->center_y = TRUE;
+                        settings->pos_given;
+                    } else {
+                        settings->position.y = parse_int(doc, c);
+                        settings->pos_given;
                     }
-                    else
-                        setting->position.y = parse_int(doc, c);
                 }
             }
 
             if ((n = parse_find_node("focus", app->children)))
-                setting->focus = parse_bool(doc, n);
+                settings->focus = parse_bool(doc, n);
 
             if ((n = parse_find_node("desktop", app->children)))
-                setting->desktop = parse_int(doc, n);
+                settings->desktop = parse_int(doc, n);
             else
-                setting->desktop = -1;
+                settings->desktop = -1;
 
             if ((n = parse_find_node("head", app->children))) {
                 if (!strcmp(parse_string(doc, n), "mouse"))
-                    setting->head = -1;
+                    settings->head = -1;
                 else
-                    setting->head = parse_int(doc, n);
+                    settings->head = parse_int(doc, n);
             }
 
             if ((n = parse_find_node("layer", app->children))) {
                 if (!strcmp(parse_string(doc, n), "above"))
-                    setting->layer = 1;
+                    settings->layer = 1;
                 else if (!strcmp(parse_string(doc, n), "below"))
-                    setting->layer = -1;
+                    settings->layer = -1;
                 else
-                    setting->layer = 0;
+                    settings->layer = 0;
             }
 
             config_per_app_settings = g_slist_append(config_per_app_settings,
This page took 0.027863 seconds and 4 git commands to generate.