|
@@ -395,8 +395,9 @@ layout_split_integrate(struct client *c, struct client *sc)
|
|
|
if(!sc
|
|
|
|| sc == c
|
|
|
|| sc->tag != c->tag
|
|
|
- || (sc->flags & CLIENT_FREE))
|
|
|
- sc = client_get_larger(c->tag);
|
|
|
+ || (sc->flags & CLIENT_FREE)
|
|
|
+ || !COMPCLIENT(c, sc))
|
|
|
+ sc = client_get_larger(c->tag, c->flags & CLIENT_IGNORE_TAG);
|
|
|
|
|
|
/* Largest not correct */
|
|
|
if(!sc || sc == c)
|
|
@@ -419,13 +420,14 @@ layout_split_integrate(struct client *c, struct client *sc)
|
|
|
}
|
|
|
|
|
|
/* Tab Next Opened Client option */
|
|
|
- if(W->flags & WMFS_TABNOC)
|
|
|
+ if(W->flags & WMFS_TABNOC && COMPCLIENT(c, sc))
|
|
|
{
|
|
|
W->flags ^= WMFS_TABNOC;
|
|
|
_client_tab(c, sc);
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
+ /* If there are clients but we can tab with them, split the screen. */
|
|
|
c->flags |= CLIENT_TILED;
|
|
|
|
|
|
g = layout_split(sc, (sc->geo.h < sc->geo.w));
|
|
@@ -437,6 +439,7 @@ layout_split_integrate(struct client *c, struct client *sc)
|
|
|
client_fac_hint(sc);
|
|
|
|
|
|
layout_save_set(c->tag);
|
|
|
+ W->flags &= ~WMFS_TABNOC;
|
|
|
}
|
|
|
|
|
|
/* Arrange inter-clients holes:
|