Introduction
Introduction Statistics Contact Development Disclaimer Help
timplemented exact focus next, if arg != NULL to focus{next,prev} - dwm - [fork…
git clone git://src.adamsgaard.dk/dwm
Log
Files
Refs
README
LICENSE
---
commit 5602f44b29b5c9a9b66b012b34f5749929c5cd31
parent b848f4bda8861115c04aecd9fd87baf928d931de
Author: Anselm R Garbe <[email protected]>
Date: Sun, 11 May 2008 14:40:37 +0100
implemented exact focus next, if arg != NULL to focus{next,prev}
Diffstat:
M config.def.h | 2 ++
M config.mk | 4 ++--
M dwm.1 | 6 ++++++
M dwm.c | 32 ++++++++++++++++-------------…
4 files changed, 27 insertions(+), 17 deletions(-)
---
diff --git a/config.def.h b/config.def.h
t@@ -53,7 +53,9 @@ Key keys[] = {
"exec dmenu_run -fn '"FONT"' -nb '"NORMBGCOLOR"' -nf '"NORMFGC…
{ MODKEY|ShiftMask, XK_Return, spawn, …
{ MODKEY, XK_j, focusnext, …
+ { MODKEY|ShiftMask, XK_j, focusnext, …
{ MODKEY, XK_k, focusprev, …
+ { MODKEY|ShiftMask, XK_k, focusprev, …
{ MODKEY, XK_r, reapply, …
{ MODKEY, XK_h, setmfact, …
{ MODKEY, XK_l, setmfact, …
diff --git a/config.mk b/config.mk
t@@ -17,8 +17,8 @@ LIBS = -L/usr/lib -lc -L${X11LIB} -lX11
# flags
CFLAGS = -Os ${INCS} -DVERSION=\"${VERSION}\"
LDFLAGS = -s ${LIBS}
-#CFLAGS = -g -std=c99 -pedantic -Wall -O2 ${INCS} -DVERSION=\"${VERSION}\"
-#LDFLAGS = -g ${LIBS}
+CFLAGS = -g -std=c99 -pedantic -Wall -O2 ${INCS} -DVERSION=\"${VERSION}\"
+LDFLAGS = -g ${LIBS}
# Solaris
#CFLAGS = -fast ${INCS} -DVERSION=\"${VERSION}\"
diff --git a/dwm.1 b/dwm.1
t@@ -66,9 +66,15 @@ Toggles between geometries.
.B Mod1\-j
Focus next window.
.TP
+.B Mod1\-Shift\-j
+Focus next window with exactly the same tags as the current one.
+.TP
.B Mod1\-k
Focus previous window.
.TP
+.B Mod1\-Shift\-k
+Focus previous window with exactly the same tags as the current one.
+.TP
.B Mod1\-h
Decrease master area size.
.TP
diff --git a/dwm.c b/dwm.c
t@@ -160,7 +160,7 @@ void initfont(const char *fontstr);
Bool isoccupied(unsigned int t);
Bool isprotodel(Client *c);
Bool isurgent(unsigned int t);
-Bool isvisible(Client *c);
+Bool isvisible(Client *c, Bool *cmp);
void keypress(XEvent *e);
void killclient(const char *arg);
void manage(Window w, XWindowAttributes *wa);
t@@ -287,7 +287,7 @@ arrange(void) {
Client *c;
for(c = clients; c; c = c->next)
- if(isvisible(c)) {
+ if(isvisible(c, NULL)) {
unban(c);
if(lt->isfloating || c->isfloating)
resize(c, c->fx, c->fy, c->fw, c->fh, True);
t@@ -469,7 +469,7 @@ configurerequest(XEvent *e) {
if((ev->value_mask & (CWX|CWY))
&& !(ev->value_mask & (CWWidth|CWHeight)))
configure(c);
- if(isvisible(c))
+ if(isvisible(c, NULL))
XMoveResizeWindow(dpy, c->win, c->x, c->y, c->…
}
else
t@@ -536,7 +536,7 @@ drawbar(void) {
drawtext(geom->symbol, dc.norm, False);
dc.x += bgw;
}
- for(c = stack; c && !isvisible(c); c = c->snext);
+ for(c = stack; c && !isvisible(c, NULL); c = c->snext);
for(i = 0; i < LENGTH(tags); i++) {
dc.w = textw(tags[i]);
if(tagset[seltags][i]) {
t@@ -676,8 +676,8 @@ expose(XEvent *e) {
void
focus(Client *c) {
- if(!c || (c && !isvisible(c)))
- for(c = stack; c && !isvisible(c); c = c->snext);
+ if(!c || (c && !isvisible(c, NULL)))
+ for(c = stack; c && !isvisible(c, NULL); c = c->snext);
if(sel && sel != c) {
grabbuttons(sel, False);
XSetWindowBorder(dpy, sel->win, dc.norm[ColBorder]);
t@@ -711,9 +711,9 @@ focusnext(const char *arg) {
if(!sel)
return;
- for(c = sel->next; c && !isvisible(c); c = c->next);
+ for(c = sel->next; c && !isvisible(c, arg ? sel->tags : NULL); c = c->…
if(!c)
- for(c = clients; c && !isvisible(c); c = c->next);
+ for(c = clients; c && !isvisible(c, arg ? sel->tags : NULL); c…
if(c) {
focus(c);
restack();
t@@ -726,10 +726,10 @@ focusprev(const char *arg) {
if(!sel)
return;
- for(c = sel->prev; c && !isvisible(c); c = c->prev);
+ for(c = sel->prev; c && !isvisible(c, arg ? sel->tags : NULL); c = c->…
if(!c) {
for(c = clients; c && c->next; c = c->next);
- for(; c && !isvisible(c); c = c->prev);
+ for(; c && !isvisible(c, arg ? sel->tags : NULL); c = c->prev);
}
if(c) {
focus(c);
t@@ -930,11 +930,13 @@ isurgent(unsigned int t) {
}
Bool
-isvisible(Client *c) {
+isvisible(Client *c, Bool *cmp) {
unsigned int i;
+ if(!cmp)
+ cmp = tagset[seltags];
for(i = 0; i < LENGTH(tags); i++)
- if(c->tags[i] && tagset[seltags][i])
+ if(c->tags[i] && cmp[i])
return True;
return False;
}
t@@ -1061,7 +1063,7 @@ monocle(void) {
Client *c;
for(c = clients; c; c = c->next)
- if((lt->isfloating || !c->isfloating) && isvisible(c))
+ if((lt->isfloating || !c->isfloating) && isvisible(c, NULL))
resize(c, mox, moy, mow - 2 * c->bw, moh - 2 * c->bw, …
}
t@@ -1115,7 +1117,7 @@ movemouse(Client *c) {
Client *
nexttiled(Client *c) {
- for(; c && (c->isfloating || !isvisible(c)); c = c->next);
+ for(; c && (c->isfloating || !isvisible(c, NULL)); c = c->next);
return c;
}
t@@ -1292,7 +1294,7 @@ restack(void) {
wc.stack_mode = Below;
wc.sibling = barwin;
for(c = stack; c; c = c->snext)
- if(!c->isfloating && isvisible(c)) {
+ if(!c->isfloating && isvisible(c, NULL)) {
XConfigureWindow(dpy, c->win, CWSibling|CWStac…
wc.sibling = c->win;
}
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.