Browse Source

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

Fixes: #712
master
Michael Stapelberg 13 years ago
parent
commit
9b29ae7afd
  1. 5
      i3lock.c
  2. 2
      unlock_indicator.c

5
i3lock.c

@ -431,6 +431,9 @@ void handle_screen_resize(void) {
uint32_t mask = XCB_CONFIG_WINDOW_WIDTH | XCB_CONFIG_WINDOW_HEIGHT; uint32_t mask = XCB_CONFIG_WINDOW_WIDTH | XCB_CONFIG_WINDOW_HEIGHT;
xcb_configure_window(conn, win, mask, last_resolution); xcb_configure_window(conn, win, mask, last_resolution);
xcb_flush(conn); 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[0] = screen->width_in_pixels;
last_resolution[1] = screen->height_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 #ifndef NOLIBCAIRO
if (image_path) { if (image_path) {

2
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 }); 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 /* XXX: Possible optimization: Only update the area in the middle of the
* screen instead of the whole screen. */ * 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_free_pixmap(conn, bg_pixmap);
xcb_flush(conn); xcb_flush(conn);
} }

Loading…
Cancel
Save