- settings->class = class;
- else
- settings->class = NULL;
-
- if (!parse_attr_string("role", app, &settings->role))
- settings->role = NULL;
-
- settings->decor = -1;
- if ((n = parse_find_node("decor", app->children)))
- if (!parse_contains("default", doc, n))
- settings->decor = parse_bool(doc, n);
-
- settings->shade = -1;
- if ((n = parse_find_node("shade", app->children)))
- if (!parse_contains("default", doc, n))
- settings->shade = parse_bool(doc, n);
-
- 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 (!parse_contains("default", doc, c)) {
- gchar *s = parse_string(doc, c);
- if (!strcmp(s, "center")) {
- settings->center_x = TRUE;
- x_pos_given = TRUE;
- } else {
- settings->position.x = parse_int(doc, c);
- x_pos_given = TRUE;
- }
- g_free(s);
+ settings->class = g_pattern_spec_new(class);
+
+ if (type_set) {
+ if (!g_ascii_strcasecmp(type, "normal"))
+ settings->type = OB_CLIENT_TYPE_NORMAL;
+ else if (!g_ascii_strcasecmp(type, "dialog"))
+ settings->type = OB_CLIENT_TYPE_DIALOG;
+ else if (!g_ascii_strcasecmp(type, "splash"))
+ settings->type = OB_CLIENT_TYPE_SPLASH;
+ else if (!g_ascii_strcasecmp(type, "utility"))
+ settings->type = OB_CLIENT_TYPE_UTILITY;
+ else if (!g_ascii_strcasecmp(type, "menu"))
+ settings->type = OB_CLIENT_TYPE_MENU;
+ else if (!g_ascii_strcasecmp(type, "toolbar"))
+ settings->type = OB_CLIENT_TYPE_TOOLBAR;
+ else if (!g_ascii_strcasecmp(type, "dock"))
+ settings->type = OB_CLIENT_TYPE_DOCK;
+ else if (!g_ascii_strcasecmp(type, "desktop"))
+ settings->type = OB_CLIENT_TYPE_DESKTOP;
+ }
+
+ if (obt_parse_attr_string(app, "role", &role))
+ settings->role = g_pattern_spec_new(role);
+
+ if ((n = obt_parse_find_node(app->children, "decor")))
+ if (!obt_parse_node_contains(n, "default"))
+ settings->decor = obt_parse_node_bool(n);
+
+ if ((n = obt_parse_find_node(app->children, "shade")))
+ if (!obt_parse_node_contains(n, "default"))
+ settings->shade = obt_parse_node_bool(n);
+
+ if ((n = obt_parse_find_node(app->children, "position"))) {
+ if ((c = obt_parse_find_node(n->children, "x")))
+ if (!obt_parse_node_contains(c, "default")) {
+ config_parse_gravity_coord(c, &settings->position.x);
+ x_pos_given = TRUE;