mirror of
https://github.com/0intro/wmii
synced 2024-11-21 21:31:33 +03:00
Treat cloned/subsumed screens as one.
This commit is contained in:
parent
7a083fffa2
commit
65ea0d29bd
@ -163,9 +163,9 @@ static bool keep_screens = true;
|
|||||||
void
|
void
|
||||||
init_screens(void) {
|
init_screens(void) {
|
||||||
static int old_n, old_nscreens;
|
static int old_n, old_nscreens;
|
||||||
Rectangle *rects;
|
Rectangle *rects, *r;
|
||||||
View *v;
|
View *v;
|
||||||
int i, n, m;
|
int i, j, n, m;
|
||||||
|
|
||||||
#ifdef notdef
|
#ifdef notdef
|
||||||
d.x = Dx(scr.rect) - Dx(screen->r);
|
d.x = Dx(scr.rect) - Dx(screen->r);
|
||||||
@ -178,6 +178,24 @@ init_screens(void) {
|
|||||||
|
|
||||||
/* Reallocate screens, zero any new ones. */
|
/* Reallocate screens, zero any new ones. */
|
||||||
rects = xinerama_screens(&n);
|
rects = xinerama_screens(&n);
|
||||||
|
r = malloc(n * sizeof *r);
|
||||||
|
|
||||||
|
/* Weed out subsumed/cloned screens */
|
||||||
|
for(m=-1; m < n; n=m) {
|
||||||
|
for(i=n-1, m=0; i >= 0; i--) {
|
||||||
|
for(j=0; j < n; j++)
|
||||||
|
if (i != j &&
|
||||||
|
eqrect(rects[i],
|
||||||
|
rect_intersection(rects[i], rects[j])))
|
||||||
|
break;
|
||||||
|
if (j == n)
|
||||||
|
r[m++] = rects[i];
|
||||||
|
}
|
||||||
|
for(i=m-1, j=0; i >= 0; i--)
|
||||||
|
rects[j++] = r[i];
|
||||||
|
}
|
||||||
|
free(r);
|
||||||
|
|
||||||
m = nscreens;
|
m = nscreens;
|
||||||
nscreens_new = keep_screens ? max(n, nscreens) : n;
|
nscreens_new = keep_screens ? max(n, nscreens) : n;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user