diff --git a/src/client.c b/src/client.c index e54e88b..c97ae26 100644 --- a/src/client.c +++ b/src/client.c @@ -559,6 +559,7 @@ client_untab(struct client *c) { client_tab_focus(cc); c->flags &= ~CLIENT_TABBED; + c->flags |= CLIENT_IGNORE_ENTER; c->tabmaster = NULL; /* Looking for tabbed client in cc, if there is not @@ -618,7 +619,10 @@ client_focus(struct client *c) if(c->flags & CLIENT_FREE && !(c->flags & (CLIENT_FULLSCREEN | CLIENT_TABBED))) + { + c->tag->flags |= CLIENT_IGNORE_ENTER; XRaiseWindow(W->dpy, c->frame); + } XSetInputFocus(W->dpy, c->win, RevertToPointerRoot, CurrentTime); } diff --git a/src/event.c b/src/event.c index ba684f1..39e03ea 100644 --- a/src/event.c +++ b/src/event.c @@ -64,6 +64,8 @@ event_enternotify(XEvent *e) { if(c->flags & CLIENT_IGNORE_ENTER) c->flags ^= CLIENT_IGNORE_ENTER; + else if(c->tag->flags & TAG_IGNORE_ENTER) + c->tag->flags ^= TAG_IGNORE_ENTER; else if(c != W->client && !(c->flags & CLIENT_TABBED)) client_focus(c); } diff --git a/src/layout.c b/src/layout.c index 4eb1d0d..ca76b42 100644 --- a/src/layout.c +++ b/src/layout.c @@ -319,6 +319,9 @@ layout_split_arrange_closed(struct client *ghost) bool b = false; enum position p; + if(!(ghost->flags & CLIENT_TILED)) + return; + /* Search for single parent for easy resize * Example case: * ___________ ___________ diff --git a/src/wmfs.h b/src/wmfs.h index b3c1c96..c0b28cf 100644 --- a/src/wmfs.h +++ b/src/wmfs.h @@ -165,7 +165,8 @@ struct tag struct tag *prev; char *name; int id; -#define TAG_URGENT 0x01 +#define TAG_URGENT 0x01 +#define TAG_IGNORE_ENTER 0x02 Flags flags; SLIST_HEAD(, client) clients; TAILQ_HEAD(ssub, layout_set) sets;