URI: 
       dwm-resizecorners-6.0.diff - sites - public wiki contents of suckless.org
  HTML git clone git://git.suckless.org/sites
   DIR Log
   DIR Files
   DIR Refs
       ---
       dwm-resizecorners-6.0.diff (2546B)
       ---
            1 diff -up dwm-6.0/dwm.c dwm-6.0-resizecorners/dwm.c
            2 --- dwm-6.0/dwm.c        2011-12-19 15:02:46.000000000 +0000
            3 +++ dwm-6.0-resizecorners/dwm.c        2015-05-12 23:31:10.803508011 +0000
            4 @@ -1364,20 +1364,35 @@ resizeclient(Client *c, int x, int y, in
            5  void
            6  resizemouse(const Arg *arg) {
            7          int ocx, ocy;
            8 +        int ocx2, ocy2;
            9 +        int nx, ny;
           10          int nw, nh;
           11          Client *c;
           12          Monitor *m;
           13          XEvent ev;
           14 +        int horizcorner, vertcorner;
           15 +        int di;
           16 +        unsigned int dui;
           17 +        Window dummy;
           18  
           19          if(!(c = selmon->sel))
           20                  return;
           21          restack(selmon);
           22          ocx = c->x;
           23          ocy = c->y;
           24 +        ocx2 = c->x + c->w;
           25 +        ocy2 = c->y + c->h;
           26          if(XGrabPointer(dpy, root, False, MOUSEMASK, GrabModeAsync, GrabModeAsync,
           27                          None, cursor[CurResize], CurrentTime) != GrabSuccess)
           28                  return;
           29 -        XWarpPointer(dpy, None, c->win, 0, 0, 0, 0, c->w + c->bw - 1, c->h + c->bw - 1);
           30 +        if (!XQueryPointer (dpy, c->win, &dummy, &dummy, &di, &di, &nx, &ny, &dui))
           31 +                return;
           32 +        horizcorner = nx < c->w / 2;
           33 +        vertcorner = ny < c->h / 2;
           34 +        XWarpPointer (dpy, None, c->win, 0, 0, 0, 0,
           35 +                      horizcorner ? (-c->bw) : (c->w + c->bw - 1),
           36 +                      vertcorner ? (-c->bw) : (c->h + c->bw - 1));
           37 +
           38          do {
           39                  XMaskEvent(dpy, MOUSEMASK|ExposureMask|SubstructureRedirectMask, &ev);
           40                  switch(ev.type) {
           41 @@ -1387,8 +1402,10 @@ resizemouse(const Arg *arg) {
           42                          handler[ev.type](&ev);
           43                          break;
           44                  case MotionNotify:
           45 -                        nw = MAX(ev.xmotion.x - ocx - 2 * c->bw + 1, 1);
           46 -                        nh = MAX(ev.xmotion.y - ocy - 2 * c->bw + 1, 1);
           47 +                        nx = horizcorner ? ev.xmotion.x : c->x;
           48 +                        ny = vertcorner ? ev.xmotion.y : c->y;
           49 +                        nw = MAX(horizcorner ? (ocx2 - nx) : (ev.xmotion.x - ocx - 2 * c->bw + 1), 1);
           50 +                        nh = MAX(vertcorner ? (ocy2 - ny) : (ev.xmotion.y - ocy - 2 * c->bw + 1), 1);
           51                          if(c->mon->wx + nw >= selmon->wx && c->mon->wx + nw <= selmon->wx + selmon->ww
           52                          && c->mon->wy + nh >= selmon->wy && c->mon->wy + nh <= selmon->wy + selmon->wh)
           53                          {
           54 @@ -1397,11 +1414,13 @@ resizemouse(const Arg *arg) {
           55                                          togglefloating(NULL);
           56                          }
           57                          if(!selmon->lt[selmon->sellt]->arrange || c->isfloating)
           58 -                                resize(c, c->x, c->y, nw, nh, True);
           59 +                                resize(c, nx, ny, nw, nh, True);
           60                          break;
           61                  }
           62          } while(ev.type != ButtonRelease);
           63 -        XWarpPointer(dpy, None, c->win, 0, 0, 0, 0, c->w + c->bw - 1, c->h + c->bw - 1);
           64 +        XWarpPointer (dpy, None, c->win, 0, 0, 0, 0,
           65 +                      horizcorner ? (-c->bw) : (c->w + c->bw - 1),
           66 +                      vertcorner ? (-c->bw) : (c->h + c->bw - 1));
           67          XUngrabPointer(dpy, CurrentTime);
           68          while(XCheckMaskEvent(dpy, EnterWindowMask, &ev));
           69          if((m = recttomon(c->x, c->y, c->w, c->h)) != selmon) {