Buckminster
(usa Debian)
Enviado em 06/11/2023 - 14:22h
O código que tu fez no Brad é praticamente igual ao código do link que te enviei antes.
Mas enfim, veja se assim fica melhor:
void
fibonacci(Monitor *mon, int s) {
unsigned int i, n, nx, ny, nw, nh, gap;
Client *c;
gap = 3; // gap size in pixels
for (n = 0, c = nexttiled(mon->clients); c; c = nexttiled(c->next), n++)
;
if (n == 0)
return;
nx = mon->wx;
ny = mon->wy;
nw = mon->ww - 2 * gap; // Remove gap das extremidades
nh = mon->wh - 2 * gap; // Remove gap das extremidades
for (i = 0, c = nexttiled(mon->clients); c; c = nexttiled(c->next)) {
if (((i % 2) && nh / 2 > 2 * c->bw) ||
((!(i % 2)) && nw / 2 > 2 * c->bw)) {
if (i < n - 1) {
if (i % 2)
nh /= 2;
else
nw /= 2;
if (((i % 4) == 2) && !s)
nx += nw + gap; // Adiciona gap entre as janelas
else if (((i % 4) == 3) && !s)
ny += nh + gap; // Adiciona gap entre as janelas
}
if ((i % 4) == 0) {
if (s)
ny += nh + gap; // Adiciona gap entre as janelas
else
ny -= nh + gap; // Adiciona gap entre as janelas
} else if ((i % 4) == 1)
nx += nw + gap; // Adiciona gap entre as janelas
else if ((i % 4) == 2)
ny += nh + gap; // Adiciona gap entre as janelas
else if ((i % 4) == 3) {
if (s)
nx += nw + gap; // Adiciona gap entre as janelas
else
nx -= nw + gap; // Adiciona gap entre as janelas
}
if (i == 0) {
if (n != 1)
nw = mon->ww * mon->mfact - gap; // Adiciona gap à direita
ny = mon->wy;
} else if (i == 1)
nw = mon->ww - nw - gap; // Adiciona gap à direita
i++;
}
resize(c, nx, ny, nw - 2 * c->bw, nh - 2 * c->bw, False);
}
}
Não testei aqui, pois estou sem os parangolés para compilar, mas qualquer coisa tu adapta ajustando o valor do gap como tu quer e modificando cálculo da largura (nw) e da posição X (nx)
_________________________________________________________
Always listen the Buck!
Enquanto o cursor estiver pulsando, há vida!