summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBob Uhl <buhl@zvelo.com>2016-11-07 10:15:20 -0700
committerMarkus Teich <teichm@fs.tum.de>2016-11-23 00:26:51 +0100
commit7a604ec1fae1eda36f210a28a2cf466583a9cb87 (patch)
tree1dd4997fb189f8fe58789a0b927e6108de173632
parentfa1158958466f38cd35c9114023a0175e67ebb6f (diff)
downloadslock-7a604ec1fae1eda36f210a28a2cf466583a9cb87.tar.gz
Fix resize with multiple monitors and portrait mode
When connecting/disconnecting a portrait monitor, the XRRScreenChangeNotifyEvent height & width are reversed due to the XRandR rotation; detect this and DTRT.
-rw-r--r--slock.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/slock.c b/slock.c
index d2f0886..61fe9ee 100644
--- a/slock.c
+++ b/slock.c
@@ -201,8 +201,13 @@ readpw(Display *dpy, struct xrandr *rr, struct lock **locks, int nscreens,
rre = (XRRScreenChangeNotifyEvent*)&ev;
for (screen = 0; screen < nscreens; screen++) {
if (locks[screen]->win == rre->window) {
- XResizeWindow(dpy, locks[screen]->win,
- rre->width, rre->height);
+ if (rre->rotation == RR_Rotate_90 ||
+ rre->rotation == RR_Rotate_270)
+ XResizeWindow(dpy, locks[screen]->win,
+ rre->height, rre->width);
+ else
+ XResizeWindow(dpy, locks[screen]->win,
+ rre->width, rre->height);
XClearWindow(dpy, locks[screen]->win);
}
}