i3lock-color

The world's most popular non-default computer lockscreen.
Index Commits Files Refs README LICENSE
commit 9b29ae7afd3f3827c107fb441ebcbbf73a1c1ced
parent f9416f6bc66c9d950d0f74a34b093a48a94d3104
Author: Michael Stapelberg <michael@stapelberg.de>
Date:   Sat, 19 May 2012 21:13:03 +0200

Bugfix: Correctly center unlock indicator after reconfiguring screens (Thanks xn)

Fixes: #712

Diffstat:
Mi3lock.c | 5+++++
Munlock_indicator.c | 2+-
2 files changed, 6 insertions(+), 1 deletion(-)
diff --git a/i3lock.c b/i3lock.c
@@ -431,6 +431,9 @@ void handle_screen_resize(void) {
     uint32_t mask = XCB_CONFIG_WINDOW_WIDTH | XCB_CONFIG_WINDOW_HEIGHT;
     xcb_configure_window(conn, win, mask, last_resolution);
     xcb_flush(conn);
+
+    xinerama_query_screens();
+    redraw_screen();
 }
 
 /*
@@ -683,6 +686,8 @@ int main(int argc, char *argv[]) {
     last_resolution[0] = screen->width_in_pixels;
     last_resolution[1] = screen->height_in_pixels;
 
+    xcb_change_window_attributes(conn, screen->root, XCB_CW_EVENT_MASK,
+            (uint32_t[]){ XCB_EVENT_MASK_STRUCTURE_NOTIFY });
 
 #ifndef NOLIBCAIRO
     if (image_path) {
diff --git a/unlock_indicator.c b/unlock_indicator.c
@@ -277,7 +277,7 @@ void redraw_screen(void) {
     xcb_change_window_attributes(conn, win, XCB_CW_BACK_PIXMAP, (uint32_t[1]){ bg_pixmap });
     /* XXX: Possible optimization: Only update the area in the middle of the
      * screen instead of the whole screen. */
-    xcb_clear_area(conn, 0, win, 0, 0, screen->width_in_pixels, screen->height_in_pixels);
+    xcb_clear_area(conn, 0, win, 0, 0, last_resolution[0], last_resolution[1]);
     xcb_free_pixmap(conn, bg_pixmap);
     xcb_flush(conn);
 }