Introduction
Introduction Statistics Contact Development Disclaimer Help
tadded antoszka's viewprev patch with some minor modifications, restored Client…
git clone git://src.adamsgaard.dk/dwm
Log
Files
Refs
README
LICENSE
---
commit a73de0cff42588d3dc3b40e4e8b198c847208dca
parent eeea4ef583a2ca3746e987bd2ecd570fd1869c2d
Author: Anselm R. Garbe <[email protected]>
Date: Wed, 10 Oct 2007 18:39:28 +0200
added antoszka's viewprev patch with some minor modifications, restored Client-…
Diffstat:
M config.def.h | 1 +
M config.mk | 2 +-
M dwm.c | 54 +++++++++++++++++++----------…
3 files changed, 35 insertions(+), 22 deletions(-)
---
diff --git a/config.def.h b/config.def.h
t@@ -49,6 +49,7 @@ Key keys[] = { \
{ MODKEY, XK_l, setmwfact, …
{ MODKEY, XK_m, togglemax, …
{ MODKEY, XK_Return, zoom, …
+ { MODKEY, XK_Tab, viewprevtag, …
{ MODKEY|ShiftMask, XK_space, togglefloating, …
{ MODKEY|ShiftMask, XK_c, killclient, …
{ MODKEY, XK_0, view, …
diff --git a/config.mk b/config.mk
t@@ -17,7 +17,7 @@ LIBS = -L/usr/lib -lc -L${X11LIB} -lX11
# flags
CFLAGS = -Os ${INCS} -DVERSION=\"${VERSION}\"
LDFLAGS = -s ${LIBS}
-#CFLAGS = -g -Wall -O2 ${INCS} -DVERSION=\"${VERSION}\"
+#CFLAGS = -g -std=c99 -pedantic -Wall -O2 ${INCS} -DVERSION=\"${VERSION}\"
#LDFLAGS = -g ${LIBS}
# Solaris
diff --git a/dwm.c b/dwm.c
t@@ -58,6 +58,22 @@ enum { WMProtocols, WMDelete, WMName, WMState, WMLast };/* …
/* typedefs */
typedef struct Client 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 *tags;
+ Client *next;
+ Client *prev;
+ Client *snext;
+ Window win;
+};
+
typedef struct {
int x, y, w, h;
unsigned long norm[ColLast];
t@@ -170,6 +186,7 @@ void updatebarpos(void);
void updatesizehints(Client *c);
void updatetitle(Client *c);
void view(const char *arg);
+void viewprevtag(const char *arg); /* views previous selected tags */
int xerror(Display *dpy, XErrorEvent *ee);
int xerrordummy(Display *dsply, XErrorEvent *ee);
int xerrorstart(Display *dsply, XErrorEvent *ee);
t@@ -219,22 +236,7 @@ Regs *regs = NULL;
/* Statically define the number of tags. */
unsigned int ntags = sizeof tags / sizeof tags[0];
Bool seltags[sizeof tags / sizeof tags[0]] = {[0] = True};
-
-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 tags[sizeof tags / sizeof tags[0]];
- Client *next;
- Client *prev;
- Client *snext;
- Window win;
-};
+Bool prevtags[sizeof tags / sizeof tags[0]] = {[0] = True};
/* functions*/
void
t@@ -265,8 +267,7 @@ applyrules(Client *c) {
if(ch.res_name)
XFree(ch.res_name);
if(!matched)
- for(i = 0; i < ntags; i++)
- c->tags[i] = seltags[i];
+ memcpy(c->tags, seltags, sizeof seltags);
}
void
t@@ -1002,13 +1003,13 @@ leavenotify(XEvent *e) {
void
manage(Window w, XWindowAttributes *wa) {
- unsigned int i;
Client *c, *t = NULL;
Window trans;
Status rettrans;
XWindowChanges wc;
c = emallocz(sizeof(Client));
+ c->tags = emallocz(sizeof seltags);
c->win = w;
c->x = wa->x;
c->y = wa->y;
t@@ -1043,8 +1044,7 @@ manage(Window w, XWindowAttributes *wa) {
if((rettrans = XGetTransientForHint(dpy, w, &trans) == Success))
for(t = clients; t && t->win != trans; t = t->next);
if(t)
- for(i = 0; i < ntags; i++)
- c->tags[i] = t->tags[i];
+ memcpy(c->tags, t->tags, sizeof seltags);
applyrules(c);
if(!c->isfloating)
c->isfloating = (rettrans == Success) || c->isfixed;
t@@ -1702,6 +1702,7 @@ unmanage(Client *c) {
focus(NULL);
XUngrabButton(dpy, AnyButton, AnyModifier, c->win);
setclientstate(c, WithdrawnState);
+ free(c->tags);
free(c);
XSync(dpy, False);
XSetErrorHandler(xerror);
t@@ -1838,6 +1839,7 @@ void
view(const char *arg) {
unsigned int i;
+ memcpy(prevtags, seltags, sizeof seltags);
for(i = 0; i < ntags; i++)
seltags[i] = arg == NULL;
i = idxoftag(arg);
t@@ -1847,6 +1849,16 @@ view(const char *arg) {
}
void
+viewprevtag(const char *arg) {
+ static Bool tmptags[sizeof tags / sizeof tags[0]];
+
+ memcpy(tmptags, seltags, sizeof seltags);
+ memcpy(seltags, prevtags, sizeof seltags);
+ memcpy(prevtags, tmptags, sizeof seltags);
+ arrange();
+}
+
+void
zoom(const char *arg) {
Client *c;
You are viewing proxied material from mx1.adamsgaard.dk. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.