summaryrefslogtreecommitdiff
path: root/src/winwidget.c
diff options
context:
space:
mode:
authorDaniel Friesel <derf@finalrewind.org>2013-02-14 12:12:56 +0100
committerDaniel Friesel <derf@finalrewind.org>2013-02-14 12:12:56 +0100
commit5dfdc0bc15e49f7c091aad123cf1b03f55d936cb (patch)
tree1a5184f1d516aa15b3eedcfb9418b6938888bd10 /src/winwidget.c
parentfc11253d85202e8733a709a5acbb8e09358d1054 (diff)
Determine active Xinerama screen by pointer position
Diffstat (limited to 'src/winwidget.c')
-rw-r--r--src/winwidget.c17
1 files changed, 11 insertions, 6 deletions
diff --git a/src/winwidget.c b/src/winwidget.c
index 2f543df..ada4c02 100644
--- a/src/winwidget.c
+++ b/src/winwidget.c
@@ -780,23 +780,28 @@ void winwidget_move(winwidget winwid, int x, int y)
void winwidget_resize(winwidget winwid, int w, int h)
{
- Window ignored_window;
XWindowAttributes attributes;
- int tc_x, tc_y;
+ int tc_x, tc_y, px, py;
int scr_width = scr->width;
int scr_height = scr->height;
+ /* discarded */
+ Window dw;
+ int di, i;
+ unsigned int du;
+
XGetWindowAttributes(disp, winwid->win, &attributes);
#ifdef HAVE_LIBXINERAMA
if (opt.xinerama && xinerama_screens) {
- int i;
xinerama_screen = 0;
+ XQueryPointer(disp, root, &dw, &dw, &px, &py, &di, &di, &du);
for (i = 0; i < num_xinerama_screens; i++) {
- if (XY_IN_RECT(attributes.x, attributes.y,
+ if (XY_IN_RECT(px, py,
xinerama_screens[i].x_org,
xinerama_screens[i].y_org,
- xinerama_screens[i].width, xinerama_screens[i].height)) {
+ xinerama_screens[i].width,
+ xinerama_screens[i].height)) {
xinerama_screen = i;
break;
}
@@ -828,7 +833,7 @@ void winwidget_resize(winwidget winwid, int w, int h)
XTranslateCoordinates(disp, winwid->win, attributes.root,
-attributes.border_width -
attributes.x,
- -attributes.border_width - attributes.y, &tc_x, &tc_y, &ignored_window);
+ -attributes.border_width - attributes.y, &tc_x, &tc_y, &dw);
winwid->x = tc_x;
winwid->y = tc_y;
XMoveResizeWindow(disp, winwid->win, tc_x, tc_y, winwid->w, winwid->h);