X-Git-Url: https://git.brokenzipper.com/gitweb?a=blobdiff_plain;ds=sidebyside;f=openbox%2Fconfig.c;h=6df57241edd60855ef817e093e31cea953cf46d0;hb=014969a9599bef99bce1e31c95326ca7f605c2ed;hp=fcff4a092e3fcd8ddf558b1c398cc84744ab6dc7;hpb=74695334c6c2f675abf05a9ceab3a08d2bdceef4;p=chaz%2Fopenbox diff --git a/openbox/config.c b/openbox/config.c index fcff4a09..6df57241 100644 --- a/openbox/config.c +++ b/openbox/config.c @@ -22,7 +22,7 @@ #include "mouse.h" #include "prop.h" #include "translate.h" -#include "per_app_settings.h" +#include "client.h" #include "parser/parse.h" #include "openbox.h" @@ -119,63 +119,69 @@ static void parse_per_app_settings(ObParseInst *i, xmlDocPtr doc, 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(ObAppSettings, 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, - (gpointer) setting); + (gpointer) settings); } app = parse_find_node("application", app->next);