allow you to force the position of windows with rc.xml's per-app settings with the force="yes" attribute

This commit is contained in:
Dana Jansens 2008-02-02 16:50:55 -05:00
parent a19f2f8bc9
commit deb0aa720a
3 changed files with 7 additions and 2 deletions

View file

@ -137,6 +137,7 @@ void config_app_settings_copy_non_defaults(const ObAppSettings *src,
if (src->pos_given) {
dst->pos_given = TRUE;
dst->pos_force = src->pos_force;
dst->position = src->position;
dst->monitor = src->monitor;
}
@ -246,6 +247,8 @@ static void parse_per_app_settings(ObParseInst *inst, xmlDocPtr doc,
settings->monitor = parse_int(doc, c) + 1;
g_free(s);
}
parse_attr_bool("force", n, &settings->pos_force);
}
if ((n = parse_find_node("focus", app->children)))

View file

@ -41,6 +41,7 @@ struct _ObAppSettings
GravityPoint position;
gboolean pos_given;
gboolean pos_force;
guint desktop;
gint shade;

View file

@ -489,8 +489,9 @@ gboolean place_client(ObClient *client, gint *x, gint *y,
gboolean userplaced = FALSE;
/* per-app settings override program specified position
* but not user specified */
if ((client->positioned & USPosition) ||
* but not user specified, unless pos_force is enabled */
if (((client->positioned & USPosition) &&
!(settings && settings->pos_given && settings->pos_force)) ||
((client->positioned & PPosition) &&
!(settings && settings->pos_given)))
return FALSE;