Fix resize with multiple monitors and portrait mode - slock - simple X display locker utility
(HTM) git clone git://git.suckless.org/slock
(DIR) Log
(DIR) Files
(DIR) Refs
(DIR) README
(DIR) LICENSE
---
(DIR) commit 7a604ec1fae1eda36f210a28a2cf466583a9cb87
(DIR) parent fa1158958466f38cd35c9114023a0175e67ebb6f
(HTM) Author: Bob Uhl <buhl@zvelo.com>
Date: Mon, 7 Nov 2016 10:15:20 -0700
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.
Diffstat:
M slock.c | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)
---
(DIR) diff --git 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);
}
}