Layout: Add width reminder in layer layout.
This commit is contained in:
@@ -635,17 +635,20 @@ layer(int screen)
|
|||||||
int n, i, l = tags[screen][seltag[screen]].layers;
|
int n, i, l = tags[screen][seltag[screen]].layers;
|
||||||
int *x = NULL;
|
int *x = NULL;
|
||||||
int *nl = NULL;
|
int *nl = NULL;
|
||||||
|
int *ncl = NULL;
|
||||||
|
|
||||||
for(n = 0, c = tiled_client(screen, clients); c; c = tiled_client(screen, c->next), ++n);
|
for(n = 0, c = tiled_client(screen, clients); c; c = tiled_client(screen, c->next), ++n);
|
||||||
CHECK(n);
|
CHECK(n);
|
||||||
|
|
||||||
x = emalloc(l + 1, sizeof(int));
|
x = emalloc(l + 1, sizeof(int));
|
||||||
nl = emalloc(l + 1, sizeof(int));
|
nl = emalloc(l + 1, sizeof(int));
|
||||||
|
ncl = emalloc(l + 1, sizeof(int));
|
||||||
|
|
||||||
for(i = 0; i < l + 1; ++i)
|
for(i = 0; i < l + 1; ++i)
|
||||||
{
|
{
|
||||||
x[i] = sg.x;
|
x[i] = sg.x;
|
||||||
nl[i] = 0;
|
nl[i] = 0;
|
||||||
|
ncl[i] = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
for(c = tiled_client(screen, clients); c; c = tiled_client(screen, c->next))
|
for(c = tiled_client(screen, clients); c; c = tiled_client(screen, c->next))
|
||||||
@@ -660,6 +663,8 @@ layer(int screen)
|
|||||||
c->flags &= ~(MaxFlag | LMaxFlag);
|
c->flags &= ~(MaxFlag | LMaxFlag);
|
||||||
c->flags |= TileFlag;
|
c->flags |= TileFlag;
|
||||||
|
|
||||||
|
++ncl[c->layer];
|
||||||
|
|
||||||
geo.x = x[c->layer];
|
geo.x = x[c->layer];
|
||||||
geo.height = (sg.height / l) - (BORDH + TBARH);
|
geo.height = (sg.height / l) - (BORDH + TBARH);
|
||||||
geo.width = (sg.width / ((nl[c->layer]) ? nl[c->layer] : 1)) - BORDH * 2;
|
geo.width = (sg.width / ((nl[c->layer]) ? nl[c->layer] : 1)) - BORDH * 2;
|
||||||
@@ -668,6 +673,9 @@ layer(int screen)
|
|||||||
if(c->layer == l)
|
if(c->layer == l)
|
||||||
geo.height = (sg.y + sg.height) - geo.y - BORDH;
|
geo.height = (sg.y + sg.height) - geo.y - BORDH;
|
||||||
|
|
||||||
|
if(ncl[c->layer] == nl[c->layer])
|
||||||
|
geo.width = sg.width - (geo.x - (sg.x - (BORDH * 2)));
|
||||||
|
|
||||||
client_moveresize(c, geo, False);
|
client_moveresize(c, geo, False);
|
||||||
|
|
||||||
x[c->layer] = geo.x + geo.width + BORDH * 2;
|
x[c->layer] = geo.x + geo.width + BORDH * 2;
|
||||||
@@ -675,6 +683,7 @@ layer(int screen)
|
|||||||
|
|
||||||
free(x);
|
free(x);
|
||||||
free(nl);
|
free(nl);
|
||||||
|
free(ncl);
|
||||||
|
|
||||||
ewmh_update_current_tag_prop();
|
ewmh_update_current_tag_prop();
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user