X-Git-Url: https://git.danieliu.xyz/?a=blobdiff_plain;ds=sidebyside;f=event.c;h=a17034cbcac615b3709768a22238fb72dee37aac;hb=d9c475d7f4978f97b63b462425eb413c11fe337b;hp=fe25deebc27835bb9147232c54f6c4f347bc7966;hpb=bcb07de75000e75a450e4dddf851e9ce69966f59;p=dwm.git diff --git a/event.c b/event.c index fe25dee..a17034c 100644 --- a/event.c +++ b/event.c @@ -37,6 +37,10 @@ movemouse(Client *c) { for(;;) { XMaskEvent(dpy, MOUSEMASK | ExposureMask, &ev); switch (ev.type) { + case ButtonRelease: + resize(c, True, TopLeft); + XUngrabPointer(dpy, CurrentTime); + return; case Expose: handler[Expose](&ev); break; @@ -46,9 +50,6 @@ movemouse(Client *c) { c->y = ocy + (ev.xmotion.y - y1); resize(c, False, TopLeft); break; - case ButtonRelease: - XUngrabPointer(dpy, CurrentTime); - return; } } } @@ -70,6 +71,10 @@ resizemouse(Client *c) { for(;;) { XMaskEvent(dpy, MOUSEMASK | ExposureMask, &ev); switch(ev.type) { + case ButtonRelease: + resize(c, True, TopLeft); + XUngrabPointer(dpy, CurrentTime); + return; case Expose: handler[Expose](&ev); break; @@ -87,9 +92,6 @@ resizemouse(Client *c) { sticky = (ocy <= ev.xmotion.y) ? TopRight : BotRight; resize(c, True, sticky); break; - case ButtonRelease: - XUngrabPointer(dpy, CurrentTime); - return; } } } @@ -124,6 +126,8 @@ buttonpress(XEvent *e) { if(ev->x < x + bmw) { if(ev->button == Button1) togglemode(NULL); + else if(ev->button == Button3) + togglestackpos(NULL); } } else if((c = getclient(ev->window))) { @@ -148,7 +152,6 @@ configurerequest(XEvent *e) { unsigned long newmask; Client *c; XConfigureRequestEvent *ev = &e->xconfigurerequest; - XEvent synev; XWindowChanges wc; if((c = getclient(ev->window))) { @@ -172,22 +175,14 @@ configurerequest(XEvent *e) { newmask = ev->value_mask & (~(CWSibling | CWStackMode | CWBorderWidth)); if(newmask) XConfigureWindow(dpy, c->win, newmask, &wc); - else { - 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); - } + else + configure(c); XSync(dpy, False); - if(c->isfloat) + if(c->isfloat) { resize(c, False, TopLeft); + if(!isvisible(c)) + ban(c); + } else arrange(NULL); } @@ -326,6 +321,7 @@ propertynotify(XEvent *e) { } if(ev->atom == XA_WM_NAME || ev->atom == netatom[NetWMName]) { updatetitle(c); + resizetitle(c); drawtitle(c); } }