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 |