aboutsummaryrefslogtreecommitdiff
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)
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,
201 rre = (XRRScreenChangeNotifyEvent*)&ev; 201 rre = (XRRScreenChangeNotifyEvent*)&ev;
202 for (screen = 0; screen < nscreens; screen++) { 202 for (screen = 0; screen < nscreens; screen++) {
203 if (locks[screen]->win == rre->window) { 203 if (locks[screen]->win == rre->window) {
204 XResizeWindow(dpy, locks[screen]->win, 204 if (rre->rotation == RR_Rotate_90 ||
205 rre->width, rre->height); 205 rre->rotation == RR_Rotate_270)
206 XResizeWindow(dpy, locks[screen]->win,
207 rre->height, rre->width);
208 else
209 XResizeWindow(dpy, locks[screen]->win,
210 rre->width, rre->height);
206 XClearWindow(dpy, locks[screen]->win); 211 XClearWindow(dpy, locks[screen]->win);
207 } 212 }
208 } 213 }