if this works i will be a bit amazed, add class matching, and allow to match either name or class or both
This commit is contained in:
parent
d4b7340454
commit
e72a1232fa
2 changed files with 25 additions and 5 deletions
|
@ -213,7 +213,12 @@ static ObAppSettings *get_settings(ObClient *client)
|
|||
while (a) {
|
||||
ObAppSettings *app = (ObAppSettings *) a->data;
|
||||
|
||||
if (!strcmp(app->name, client->name)) {
|
||||
if (
|
||||
(app->name && && !app->class && !strcmp(app->name, client->name))
|
||||
|| (app->class && !app->name && !strcmp(app->class, client->class))
|
||||
|| (app->class && app->name && !strcmp(app->class, client->class)
|
||||
&& !strcmp(app->name, client->name))
|
||||
) {
|
||||
ob_debug("Window matching: %s\n", app->name);
|
||||
/* Match if no role was specified in the per app setting, or if the string
|
||||
* matches the beginning of the role, since apps like to set the role to
|
||||
|
|
|
@ -115,14 +115,28 @@ static void parse_per_app_settings(ObParseInst *i, xmlDocPtr doc,
|
|||
xmlNodePtr node, gpointer d)
|
||||
{
|
||||
xmlNodePtr app = parse_find_node("application", node->children);
|
||||
gchar *name;
|
||||
gchar *name, *class;
|
||||
gboolean name_set, class_set;
|
||||
gboolean x_pos_given;
|
||||
|
||||
while (app) {
|
||||
gboolean x_pos_given = FALSE;
|
||||
if (parse_attr_string("name", app, &name)) {
|
||||
name_set = class_set = x_pos_given = FALSE;
|
||||
|
||||
class_set = parse_attr_string("class", app, &class);
|
||||
name_set = parse_attr_string("name", app, &name);
|
||||
if (class_set || name_set) {
|
||||
xmlNodePtr n, c;
|
||||
ObAppSettings *settings = g_new0(ObAppSettings, 1);
|
||||
settings->name = name;
|
||||
|
||||
if (name_set)
|
||||
settings->name = name;
|
||||
else
|
||||
settings->name = NULL;
|
||||
if (class_set)
|
||||
settings->class = class;
|
||||
else
|
||||
settings->class = NULL;
|
||||
|
||||
if (!parse_attr_string("role", app, &settings->role))
|
||||
settings->role = NULL;
|
||||
|
||||
|
@ -810,6 +824,7 @@ void config_shutdown()
|
|||
ObAppSettings *itd = (ObAppSettings *)it->data;
|
||||
g_free(itd->name);
|
||||
g_free(itd->role);
|
||||
g_free(itd->class);
|
||||
g_free(it->data);
|
||||
}
|
||||
g_slist_free(config_per_app_settings);
|
||||
|
|
Loading…
Reference in a new issue