From 5f295213b64406c170ea8f209280cb61fedbb5ce Mon Sep 17 00:00:00 2001 From: okan Date: Thu, 29 Nov 2012 04:25:49 +0000 Subject: specific last match for autogroup; few iterations with Kent Spillner. --- cwmrc.5 | 5 +++-- group.c | 16 +++++++++------- 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/cwmrc.5 b/cwmrc.5 index 8f44c7e..7b77b7a 100644 --- a/cwmrc.5 +++ b/cwmrc.5 @@ -1,4 +1,4 @@ -.\" $OpenBSD: cwmrc.5,v 1.48 2012/11/07 14:59:07 okan Exp $ +.\" $OpenBSD: cwmrc.5,v 1.49 2012/11/29 04:25:49 okan Exp $ .\" .\" Copyright (c) 2004,2005 Marius Aamodt Eriksen .\" @@ -14,7 +14,7 @@ .\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF .\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. .\" -.Dd $Mdocdate: November 7 2012 $ +.Dd $Mdocdate: November 29 2012 $ .Dt CWMRC 5 .Os .Sh NAME @@ -50,6 +50,7 @@ or if their name and class properties match and .Ar windowclass , respectively. +The more specific last match wins. .Ar group is a number between 0 and 9. If diff --git a/group.c b/group.c index 8a5a90c..386fdc9 100644 --- a/group.c +++ b/group.c @@ -16,7 +16,7 @@ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. * - * $OpenBSD: group.c,v 1.63 2012/11/09 03:52:02 okan Exp $ + * $OpenBSD: group.c,v 1.64 2012/11/29 04:25:49 okan Exp $ */ #include @@ -412,7 +412,7 @@ group_autogroup(struct client_ctx *cc) struct screen_ctx *sc = cc->sc; struct autogroupwin *aw; struct group_ctx *gc; - int no = -1; + int no = -1, both_match = 0; long *grpno; if (cc->app_class == NULL || cc->app_name == NULL) @@ -429,11 +429,13 @@ group_autogroup(struct client_ctx *cc) XFree(grpno); } else { TAILQ_FOREACH(aw, &Conf.autogroupq, entry) { - if (strcmp(aw->class, cc->app_class) == 0 && - (aw->name == NULL || - strcmp(aw->name, cc->app_name) == 0)) { - no = aw->num; - break; + if (strcmp(aw->class, cc->app_class) == 0) { + if ((aw->name != NULL) && + (strcmp(aw->name, cc->app_name) == 0)) { + no = aw->num; + both_match = 1; + } else if (aw->name == NULL && !both_match) + no = aw->num; } } } -- cgit v1.2.3-2-gb3c3