summaryrefslogtreecommitdiff
path: root/patch/maximize.c
diff options
context:
space:
mode:
Diffstat (limited to 'patch/maximize.c')
-rw-r--r--patch/maximize.c70
1 files changed, 70 insertions, 0 deletions
diff --git a/patch/maximize.c b/patch/maximize.c
new file mode 100644
index 0000000..c89dbda
--- /dev/null
+++ b/patch/maximize.c
@@ -0,0 +1,70 @@
+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 = True;
+ else {
+ togglefloating(NULL);
+ selmon->sel->wasfloating = False;
+ }
+ selmon->sel->oldx = selmon->sel->x;
+ selmon->sel->oldy = selmon->sel->y;
+ selmon->sel->oldw = selmon->sel->w;
+ selmon->sel->oldh = selmon->sel->h;
+ resize(selmon->sel, x, y, w, h, True);
+ selmon->sel->ismax = True;
+ }
+ else {
+ resize(selmon->sel, selmon->sel->oldx, selmon->sel->oldy, selmon->sel->oldw, selmon->sel->oldh, True);
+ if (!selmon->sel->wasfloating)
+ togglefloating(NULL);
+ selmon->sel->ismax = False;
+ }
+ drawbar(selmon);
+ while (XCheckMaskEvent(dpy, EnterWindowMask, &ev));
+}
+
+#if SETBORDERPX_PATCH
+void
+togglemax(const Arg *arg)
+{
+ maximize(selmon->wx, selmon->wy, selmon->ww - 2 * selmon->borderpx, selmon->wh - 2 * selmon->borderpx);
+}
+
+void
+toggleverticalmax(const Arg *arg)
+{
+ maximize(selmon->sel->x, selmon->wy, selmon->sel->w, selmon->wh - 2 * selmon->borderpx);
+}
+
+void
+togglehorizontalmax(const Arg *arg)
+{
+ maximize(selmon->wx, selmon->sel->y, selmon->ww - 2 * selmon->borderpx, selmon->sel->h);
+}
+#else
+void
+togglemax(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);
+}
+#endif // SETBORDERPX_PATCH
+