commit c9b330890a17765f2b8f695d0a64ddf4a6b0f5a4
Author: Jonathen Russell <[email protected]>
Date:   Thu Dec 31 06:01:50 2015 +1000

    Add updated maximize patch for 3465bed290ab
    
        - changes boolean values to integers
    
        - removes redundant window size saving (resizeclient() does
          this already)

diff --git a/dwm.suckless.org/patches/dwm-3465bed290ab-maximize_vert_horz.diff 
b/dwm.suckless.org/patches/dwm-3465bed290ab-maximize_vert_horz.diff
new file mode 100644
index 0000000..d428708
--- /dev/null
+++ b/dwm.suckless.org/patches/dwm-3465bed290ab-maximize_vert_horz.diff
@@ -0,0 +1,73 @@
+Author: Jan Christoph Ebersbach <[email protected]>
+URL: http://dwm.suckless.org/patches/historical/moveresize
+These patches provide helper functions for moving and resizing floating windows
+using keybindings.
+
+Index: dwm/dwm.c
+===================================================================
+--- dwm/dwm.c.orig     2014-02-09 15:24:12.552116979 +0100
++++ dwm/dwm.c  2014-02-09 15:24:12.548116979 +0100
+@@ -92,7 +92,7 @@
+       int basew, baseh, incw, inch, maxw, maxh, minw, minh;
+       int bw, oldbw;
+       unsigned int tags;
+-      int isfixed, isfloating, isurgent, neverfocus, oldstate, isfullscreen;
++      int ismax, wasfloating, isfixed, isfloating, isurgent, neverfocus, 
oldstate, isfullscreen;
+       Client *next;
+       Client *snext;
+       Monitor *mon;
+@@ -1077,6 +1077,8 @@
+       updatewmhints(c);
+       XSelectInput(dpy, w, 
EnterWindowMask|FocusChangeMask|PropertyChangeMask|StructureNotifyMask);
+       grabbuttons(c, 0);
++      c->wasfloating = 0;
++      c->ismax = 0;
+       if (!c->isfloating)
+               c->isfloating = c->oldstate = trans != None || c->isfixed;
+       if (c->isfloating)
+Index: dwm/maximize.c
+===================================================================
+--- /dev/null  1970-01-01 00:00:00.000000000 +0000
++++ dwm/maximize.c     2014-02-09 15:24:12.548116979 +0100
+@@ -0,0 +1,41 @@
++void
++maximize(int x, int y, int w, int h) {
++      XEvent ev;
++
++      if(!selmon->sel || selmon->sel->isfixed)
++              return;
++      XRaiseWindow(dpy, selmon->sel->win);
++      if(!selmon->sel->ismax) {
++              if(!selmon->lt[selmon->sellt]->arrange || 
selmon->sel->isfloating)
++                      selmon->sel->wasfloating = 1;
++              else {
++                      togglefloating(NULL);
++                      selmon->sel->wasfloating = 0;
++              }
++              resize(selmon->sel, x, y, w, h, 1);
++              selmon->sel->ismax = 1;
++      }
++      else {
++              resize(selmon->sel, selmon->sel->oldx, selmon->sel->oldy, 
selmon->sel->oldw, selmon->sel->oldh, 1);
++              if(!selmon->sel->wasfloating)
++                      togglefloating(NULL);
++              selmon->sel->ismax = 0;
++      }
++      drawbar(selmon);
++      while(XCheckMaskEvent(dpy, EnterWindowMask, &ev));
++}
++
++void
++togglemaximize(const Arg *arg) {
++      maximize(selmon->wx, selmon->wy, selmon->ww - 2 * borderpx, selmon->wh 
- 2 * borderpx);
++}
++
++void
++toggleverticalmax(const Arg *arg) {
++      maximize(selmon->sel->x, selmon->wy, selmon->sel->w, selmon->wh - 2 * 
borderpx);
++}
++
++void
++togglehorizontalmax(const Arg *arg) {
++      maximize(selmon->wx, selmon->sel->y, selmon->ww - 2 * borderpx, 
selmon->sel->h);
++}


Reply via email to