#define CLEANMASK(mask) (mask & ~(numlockmask | LockMask))
-static void
-synconfig(Client *c, int x, int y, int w, int h, unsigned int border) {
- XEvent synev;
-
- synev.type = ConfigureNotify;
- synev.xconfigure.display = dpy;
- synev.xconfigure.event = c->win;
- synev.xconfigure.window = c->win;
- synev.xconfigure.x = x;
- synev.xconfigure.y = y;
- synev.xconfigure.width = w;
- synev.xconfigure.height = h;
- synev.xconfigure.border_width = border;
- synev.xconfigure.above = None;
- XSendEvent(dpy, c->win, True, NoEventMask, &synev);
-}
-
static void
movemouse(Client *c) {
int x1, y1, ocx, ocy, di;
c->ismax = False;
XQueryPointer(dpy, root, &dummy, &dummy, &x1, &y1, &di, &di, &dui);
for(;;) {
- XMaskEvent(dpy, MOUSEMASK | ExposureMask | StructureNotifyMask, &ev);
+ XMaskEvent(dpy, MOUSEMASK | ExposureMask, &ev);
switch (ev.type) {
- default:
- break;
- case ConfigureRequest:
- synconfig(c, c->x, c->y, c->w, c->h, ev.xconfigure.border_width);
- XSync(dpy, False);
- break;
+ case ButtonRelease:
+ resize(c, True, TopLeft);
+ XUngrabPointer(dpy, CurrentTime);
+ return;
case Expose:
handler[Expose](&ev);
break;
c->y = ocy + (ev.xmotion.y - y1);
resize(c, False, TopLeft);
break;
- case ButtonRelease:
- XUngrabPointer(dpy, CurrentTime);
- return;
- case DestroyNotify:
- case UnmapNotify:
- XUngrabPointer(dpy, CurrentTime);
- handler[ev.type](&ev);
- return;
}
}
}
c->ismax = False;
XWarpPointer(dpy, None, c->win, 0, 0, 0, 0, c->w, c->h);
for(;;) {
- XMaskEvent(dpy, MOUSEMASK | ExposureMask | StructureNotifyMask, &ev);
+ XMaskEvent(dpy, MOUSEMASK | ExposureMask, &ev);
switch(ev.type) {
- default:
- break;
- case ConfigureRequest:
- synconfig(c, c->x, c->y, c->w, c->h, ev.xconfigure.border_width);
- XSync(dpy, False);
- break;
+ case ButtonRelease:
+ resize(c, True, TopLeft);
+ XUngrabPointer(dpy, CurrentTime);
+ return;
case Expose:
handler[Expose](&ev);
break;
sticky = (ocy <= ev.xmotion.y) ? TopRight : BotRight;
resize(c, True, sticky);
break;
- case ButtonRelease:
- XUngrabPointer(dpy, CurrentTime);
- return;
- case DestroyNotify:
- case UnmapNotify:
- XUngrabPointer(dpy, CurrentTime);
- handler[ev.type](&ev);
- return;
}
}
}
return;
}
}
- if(ev->x < x + bmw) {
- if(ev->button == Button1)
- togglemode(NULL);
- }
+ if((ev->x < x + bmw) && (ev->button == Button1))
+ togglemode(NULL);
}
else if((c = getclient(ev->window))) {
focus(c);
if(CLEANMASK(ev->state) != MODKEY)
return;
if(ev->button == Button1 && (arrange == dofloat || c->isfloat)) {
- restack(c);
+ restack();
movemouse(c);
}
else if(ev->button == Button2)
zoom(NULL);
else if(ev->button == Button3 && (arrange == dofloat || c->isfloat)) {
- restack(c);
+ restack();
resizemouse(c);
}
}
XWindowChanges wc;
if((c = getclient(ev->window))) {
- if((c == sel) && !c->isfloat && (arrange != dofloat)) {
- synconfig(c, sx, sy + bh, sw - 2, sh - 2 - bh, ev->border_width);
- XSync(dpy, False);
- return;
- }
+ c->ismax = False;
gravitate(c, True);
if(ev->value_mask & CWX)
c->x = ev->x;
if(newmask)
XConfigureWindow(dpy, c->win, newmask, &wc);
else
- synconfig(c, c->x, c->y, c->w, c->h, c->border);
+ configure(c);
XSync(dpy, False);
- if(c->isfloat)
+ if(c->isfloat) {
resize(c, False, TopLeft);
+ if(!isvisible(c))
+ ban(c);
+ }
else
arrange(NULL);
}
}
if(ev->atom == XA_WM_NAME || ev->atom == netatom[NetWMName]) {
updatetitle(c);
+ resizetitle(c);
drawtitle(c);
}
}
};
void
-grabkeys() {
+grabkeys(void) {
static unsigned int len = sizeof(key) / sizeof(key[0]);
unsigned int i;
KeyCode code;
}
void
-procevent() {
+procevent(void) {
XEvent ev;
while(XPending(dpy)) {