[hackers] [dwm] simplified Mod-m

From: Anselm R. Garbe <garbeam_AT_gmail.com>
Date: Sun Dec 09 13:43:12 2007

changeset: 1071:3303e2643918
tag: tip
user: Anselm R. Garbe <garbeam_AT_gmail.com>
date: Sun Dec 09 13:39:29 2007 +0100
summary: simplified Mod-m

diff -r dc37f0e022f7 -r 3303e2643918 config.def.h
--- a/config.def.h Sat Dec 08 20:11:56 2007 +0100
+++ b/config.def.h Sun Dec 09 13:39:29 2007 +0100
@@ -46,7 +46,7 @@ Key keys[] = {
         { MODKEY, XK_k, focusprev, NULL },
         { MODKEY, XK_h, setmwfact, "-0.05" },
         { MODKEY, XK_l, setmwfact, "+0.05" },
- { MODKEY, XK_m, togglemax, NULL },
+ { MODKEY, XK_m, maximize, NULL },
         { MODKEY, XK_r, reapply, NULL },
         { MODKEY, XK_Return, zoom, NULL },
         { MODKEY, XK_Tab, viewprevtag, NULL },
diff -r dc37f0e022f7 -r 3303e2643918 dwm.1
--- a/dwm.1 Sat Dec 08 20:11:56 2007 +0100
+++ b/dwm.1 Sun Dec 09 13:39:29 2007 +0100
@@ -78,7 +78,7 @@ Increases the master area width about 5%
 Increases the master area width about 5% (tiled layout only).
 .TP
 .B Mod1\-m
-Toggles maximization of current window.
+Maximizes current window (floating layout/window only).
 .TP
 .B Mod1\-r
 Re-applies tagging rules to all windows.
diff -r dc37f0e022f7 -r 3303e2643918 dwm.c
--- a/dwm.c Sat Dec 08 20:11:56 2007 +0100
+++ b/dwm.c Sun Dec 09 13:39:29 2007 +0100
@@ -61,12 +61,11 @@ struct Client {
 struct Client {
         char name[256];
         int x, y, w, h;
- int rx, ry, rw, rh; /* revert geometry */
         int basew, baseh, incw, inch, maxw, maxh, minw, minh;
         int minax, maxax, minay, maxay;
         long flags;
         unsigned int border, oldborder;
- Bool isbanned, isfixed, ismax, isfloating, wasfloating;
+ Bool isbanned, isfixed, isfloating;
         Bool *tags;
         Client *next;
         Client *prev;
@@ -157,6 +156,7 @@ void manage(Window w, XWindowAttributes
 void manage(Window w, XWindowAttributes *wa);
 void mappingnotify(XEvent *e);
 void maprequest(XEvent *e);
+void maximize(const char *arg);
 void movemouse(Client *c);
 Client *nexttiled(Client *c);
 void propertynotify(XEvent *e);
@@ -178,7 +178,6 @@ void tile(void);
 void tile(void);
 void togglebar(const char *arg);
 void togglefloating(const char *arg);
-void togglemax(const char *arg);
 void toggletag(const char *arg);
 void toggleview(const char *arg);
 void unban(Client *c);
@@ -466,7 +465,6 @@ configurerequest(XEvent *e) {
         XWindowChanges wc;
 
         if((c = getclient(ev->window))) {
- c->ismax = False;
                 if(ev->value_mask & CWBorderWidth)
                         c->border = ev->border_width;
                 if(c->isfixed || c->isfloating || (floating == layout->arrange)) {
@@ -563,7 +561,7 @@ drawbar(void) {
                 dc.x = x;
                 if(sel) {
                         drawtext(sel->name, dc.sel);
- drawsquare(sel->ismax, sel->isfloating, dc.sel);
+ drawsquare(False, sel->isfloating, dc.sel);
                 }
                 else
                         drawtext(NULL, dc.norm);
@@ -1079,6 +1077,13 @@ maprequest(XEvent *e) {
 }
 
 void
+maximize(const char *arg) {
+ if(!sel || (!sel->isfloating && layout->arrange != floating))
+ return;
+ resize(sel, wax, way, waw - 2 * sel->border, wah - 2 * sel->border, True);
+}
+
+void
 movemouse(Client *c) {
         int x1, y1, ocx, ocy, di, nx, ny;
         unsigned int dui;
@@ -1090,7 +1095,6 @@ movemouse(Client *c) {
         if(XGrabPointer(dpy, root, False, MOUSEMASK, GrabModeAsync, GrabModeAsync,
                         None, cursor[CurMove], CurrentTime) != GrabSuccess)
                 return;
- c->ismax = False;
         XQueryPointer(dpy, root, &dummy, &dummy, &x1, &y1, &di, &di, &dui);
         for(;;) {
                 XMaskEvent(dpy, MOUSEMASK | ExposureMask | SubstructureRedirectMask, &ev);
@@ -1248,7 +1252,6 @@ resizemouse(Client *c) {
         if(XGrabPointer(dpy, root, False, MOUSEMASK, GrabModeAsync, GrabModeAsync,
                         None, cursor[CurResize], CurrentTime) != GrabSuccess)
                 return;
- c->ismax = False;
         XWarpPointer(dpy, None, c->win, 0, 0, 0, 0, c->w + c->border - 1, c->h + c->border - 1);
         for(;;) {
                 XMaskEvent(dpy, MOUSEMASK | ExposureMask | SubstructureRedirectMask , &ev);
@@ -1609,7 +1612,6 @@ tile(void) {
         ny = way;
         nw = 0; /* gcc stupidity requires this */
         for(i = 0, c = mc = nexttiled(clients); c; c = nexttiled(c->next), i++) {
- c->ismax = False;
                 if(i == 0) { /* master */
                         nw = mw - 2 * c->border;
                         nh = wah - 2 * c->border;
@@ -1652,34 +1654,6 @@ togglefloating(const char *arg) {
         if(sel->isfloating)
                 resize(sel, sel->x, sel->y, sel->w, sel->h, True);
         arrange();
-}
-
-void
-togglemax(const char *arg) {
- XEvent ev;
-
- if(!sel || sel->isfixed)
- return;
- if((sel->ismax = !sel->ismax)) {
- if((layout->arrange == floating) || sel->isfloating)
- sel->wasfloating = True;
- else {
- togglefloating(NULL);
- sel->wasfloating = False;
- }
- sel->rx = sel->x;
- sel->ry = sel->y;
- sel->rw = sel->w;
- sel->rh = sel->h;
- resize(sel, wax, way, waw - 2 * sel->border, wah - 2 * sel->border, True);
- }
- else {
- resize(sel, sel->rx, sel->ry, sel->rw, sel->rh, True);
- if(!sel->wasfloating)
- togglefloating(NULL);
- }
- drawbar();
- while(XCheckMaskEvent(dpy, EnterWindowMask, &ev));
 }
 
 void
Received on Sun Dec 09 2007 - 13:43:12 UTC

This archive was generated by hypermail 2.2.0 : Sun Jul 13 2008 - 15:58:54 UTC