X-Git-Url: http://pileus.org/git/?p=wmpus;a=blobdiff_plain;f=sys-x11.c;h=1a833da3b23a033e22d81ea767a8fb91a1f29dd0;hp=d50595115eb403da7352d2a0c3391ce0069693b2;hb=08a8a76218133e513d7804fcc3307c895f22956b;hpb=2fc8a765e86a31b321ec6ae0aa7f43bfdda322e3 diff --git a/sys-x11.c b/sys-x11.c index d505951..1a833da 100644 --- a/sys-x11.c +++ b/sys-x11.c @@ -61,6 +61,7 @@ typedef enum { /* Global data */ static win_t *root; +static win_t *last; static int running; static void *cache; static Atom atoms[NATOMS]; @@ -299,6 +300,8 @@ static win_t *win_find(Display *dpy, Window xid, int create) static void win_free(win_t *win) { + if (win == last) + last = NULL; free(win->sys); free(win); } @@ -455,7 +458,7 @@ static void process_event(int type, XEvent *xe, win_t *root) printf("configure_req: %lx - (0x%lx) %dx%d @ %d,%d\n", cre->window, cre->value_mask, cre->height, cre->width, cre->x, cre->y); - if ((win = win_find(dpy,xe->xconfigurerequest.window,1))) { + if ((win = win_find(dpy,cre->window,1))) { XSendEvent(dpy, cre->window, False, StructureNotifyMask, &(XEvent){ .xconfigure.type = ConfigureNotify, .xconfigure.display = win->sys->dpy, @@ -569,7 +572,6 @@ void sys_focus(win_t *win) //win_msg(win, WM_FOCUS); /* Set border on focused window */ - static win_t *last = NULL; if (last) XSetWindowBorder(last->sys->dpy, last->sys->xid, colors[CLR_UNFOCUS]); XSync(win->sys->dpy, False); @@ -629,6 +631,8 @@ void sys_show(win_t *win, state_t state) .width = screen->w + screen->sys->strut.left + screen->sys->strut.right, .height = screen->h + screen->sys->strut.top + screen->sys->strut.bottom }; + win->x = wc.x; win->y = wc.y; + win->w = wc.width; win->h = wc.height; XConfigureWindow(win->sys->dpy, win->sys->xid, CWX|CWY|CWWidth|CWHeight, &wc); XMoveResizeWindow(win->sys->dpy, win->sys->xid, wc.x, wc.y, wc.width, wc.height); } else if (state == ST_SHADE) {