X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;ds=sidebyside;f=openbox%2Fconfig.c;h=dd8d2b830b9314d6f570c20a0b8353117e45cd35;hb=76f514cf52cb6a30de8a7d3a8132bd67118ea463;hp=78a8ed5416d9f5bf72d9e83f08edbf893c40b9c0;hpb=9aeb9d9fb5e4628ea119f1408f7bd16c96410224;p=chaz%2Fopenbox diff --git a/openbox/config.c b/openbox/config.c index 78a8ed54..dd8d2b83 100644 --- a/openbox/config.c +++ b/openbox/config.c @@ -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,