1556 } |
1556 } |
1557 |
1557 |
1558 void |
1558 void |
1559 updategeom(void) { |
1559 updategeom(void) { |
1560 #ifdef XINERAMA |
1560 #ifdef XINERAMA |
1561 int n; |
1561 int n, i = 0; |
1562 unsigned int xidx = 0; |
|
1563 XineramaScreenInfo *info = NULL; |
1562 XineramaScreenInfo *info = NULL; |
1564 |
1563 |
1565 /* window area geometry */ |
1564 /* window area geometry */ |
1566 if(XineramaIsActive(dpy)) { |
1565 if(XineramaIsActive(dpy)) { |
1567 info = XineramaQueryScreens(dpy, &n); |
1566 info = XineramaQueryScreens(dpy, &n); |
1568 if(n > 1) { |
1567 if(n > 1) { |
1569 int di, i, x, y; |
1568 int di, x, y; |
1570 unsigned int dui; |
1569 unsigned int dui; |
1571 Window dummy; |
1570 Window dummy; |
1572 if(XQueryPointer(dpy, root, &dummy, &dummy, &x, &y, &di, &di, &dui)) |
1571 if(XQueryPointer(dpy, root, &dummy, &dummy, &x, &y, &di, &di, &dui)) |
1573 for(i = 0; i < n; i++) |
1572 for(i = 0; i < n; i++) |
1574 if(INRECT(x, y, info[i].x_org, info[i].y_org, info[i].width, info[i].height)) { |
1573 if(INRECT(x, y, info[i].x_org, info[i].y_org, info[i].width, info[i].height)) |
1575 xidx = i; |
|
1576 break; |
1574 break; |
1577 } |
1575 } |
1578 } |
1576 wx = info[i].x_org; |
1579 wx = info[xidx].x_org; |
1577 wy = showbar && topbar ? info[i].y_org + bh : info[i].y_org; |
1580 wy = showbar && topbar ? info[xidx].y_org + bh : info[xidx].y_org; |
1578 ww = info[i].width; |
1581 ww = info[xidx].width; |
1579 wh = showbar ? info[i].height - bh : info[i].height; |
1582 wh = showbar ? info[xidx].height - bh : info[xidx].height; |
|
1583 XFree(info); |
1580 XFree(info); |
1584 } |
1581 } |
1585 else |
1582 else |
1586 #endif |
1583 #endif |
1587 { |
1584 { |