| tsimplified configurerequest - dwm - [fork] customized build of dwm, the dynami… | |
| git clone git://src.adamsgaard.dk/dwm | |
| Log | |
| Files | |
| Refs | |
| README | |
| LICENSE | |
| --- | |
| commit 71857b87ee4e5ce63594d062143e6ea78f842b0d | |
| parent 6ba400ee0fa55d1178cac5f38f4465a1ddf30490 | |
| Author: Anselm R. Garbe <[email protected]> | |
| Date: Tue, 13 Feb 2007 13:39:33 +0100 | |
| simplified configurerequest | |
| Diffstat: | |
| M client.c | 25 +++++++++++++------------ | |
| M event.c | 51 ++++++++++-------------------… | |
| 2 files changed, 29 insertions(+), 47 deletions(-) | |
| --- | |
| diff --git a/client.c b/client.c | |
| t@@ -69,19 +69,20 @@ xerrordummy(Display *dsply, XErrorEvent *ee) { | |
| void | |
| configure(Client *c) { | |
| - XEvent synev; | |
| + XConfigureEvent ce; | |
| - synev.type = ConfigureNotify; | |
| - synev.xconfigure.display = dpy; | |
| - synev.xconfigure.event = c->win; | |
| - synev.xconfigure.window = c->win; | |
| - synev.xconfigure.x = c->x; | |
| - synev.xconfigure.y = c->y; | |
| - synev.xconfigure.width = c->w; | |
| - synev.xconfigure.height = c->h; | |
| - synev.xconfigure.border_width = c->border; | |
| - synev.xconfigure.above = None; | |
| - XSendEvent(dpy, c->win, True, NoEventMask, &synev); | |
| + ce.type = ConfigureNotify; | |
| + ce.display = dpy; | |
| + ce.event = c->win; | |
| + ce.window = c->win; | |
| + ce.x = c->x; | |
| + ce.y = c->y; | |
| + ce.width = c->w; | |
| + ce.height = c->h; | |
| + ce.border_width = c->border; | |
| + ce.above = None; | |
| + ce.override_redirect = False; | |
| + XSendEvent(dpy, c->win, False, StructureNotifyMask, (XEvent *)&ce); | |
| } | |
| void | |
| diff --git a/event.c b/event.c | |
| t@@ -166,52 +166,33 @@ buttonpress(XEvent *e) { | |
| static void | |
| configurerequest(XEvent *e) { | |
| - unsigned long newmask; | |
| Client *c; | |
| XConfigureRequestEvent *ev = &e->xconfigurerequest; | |
| XWindowChanges wc; | |
| + wc.x = ev->x; | |
| + wc.y = ev->y; | |
| + wc.width = ev->width; | |
| + wc.height = ev->height; | |
| + wc.border_width = ev->border_width; | |
| + wc.sibling = ev->above; | |
| + wc.stack_mode = ev->detail; | |
| if((c = getclient(ev->window))) { | |
| c->ismax = False; | |
| - if(ev->value_mask & CWX) | |
| - c->x = ev->x; | |
| - if(ev->value_mask & CWY) | |
| - c->y = ev->y; | |
| - if(ev->value_mask & CWWidth) | |
| - c->w = ev->width; | |
| - if(ev->value_mask & CWHeight) | |
| - c->h = ev->height; | |
| if(ev->value_mask & CWBorderWidth) | |
| c->border = ev->border_width; | |
| - wc.x = c->x; | |
| - wc.y = c->y; | |
| - wc.width = c->w; | |
| - wc.height = c->h; | |
| - newmask = ev->value_mask & (~(CWSibling | CWStackMode | CWBord… | |
| - if(newmask) | |
| - XConfigureWindow(dpy, c->win, newmask, &wc); | |
| - else | |
| + if((!c->isfloat && (arrange != dofloat)) | |
| + || ((ev->value_mask & (CWX|CWY)) && !(ev->value_mask &… | |
| + { | |
| configure(c); | |
| - XSync(dpy, False); | |
| - if(c->isfloat) { | |
| - resize(c, False); | |
| - if(!isvisible(c)) | |
| - XMoveWindow(dpy, c->win, c->x + 2 * sw, c->y); | |
| + XSync(dpy, False); | |
| + return; | |
| } | |
| - else | |
| - arrange(); | |
| - } | |
| - else { | |
| - wc.x = ev->x; | |
| - wc.y = ev->y; | |
| - wc.width = ev->width; | |
| - wc.height = ev->height; | |
| - wc.border_width = ev->border_width; | |
| - wc.sibling = ev->above; | |
| - wc.stack_mode = ev->detail; | |
| - XConfigureWindow(dpy, ev->window, ev->value_mask, &wc); | |
| - XSync(dpy, False); | |
| } | |
| + XConfigureWindow(dpy, ev->window, ev->value_mask, &wc); | |
| + if(c && !isvisible(c)) | |
| + XMoveWindow(dpy, c->win, c->x + 2 * sw, c->y); | |
| + XSync(dpy, False); | |
| } | |
| static void |