changeset 1:ba504f41828f

add prev/next control to view_tags() and setlayouts()
author paulo@localhost
date Mon, 23 Mar 2009 00:14:48 -0700
parents 7024076fa948
children de6bb7885c97
files config.h dwm.h layout.c tag.c
diffstat 4 files changed, 29 insertions(+), 7 deletions(-) [+]
line diff
     1.1 --- a/config.h	Sun Mar 22 23:26:35 2009 -0700
     1.2 +++ b/config.h	Mon Mar 23 00:14:48 2009 -0700
     1.3 @@ -83,6 +83,7 @@
     1.4  	{ MODKEY|ControlMask|ShiftMask,	XK_0,		toggletag,	{ .i = 9 } }, \
     1.5  	{ MODKEY|ShiftMask,		XK_c,		killclient,	{ 0 } }, \
     1.6  	{ MODKEY,			XK_space,	setlayout,	{ .i = -1 } }, \
     1.7 +	{ MODKEY|ShiftMask,			XK_space,	setlayout,	{ .i = -2 } }, \
     1.8  	{ MODKEY,			XK_F1,	setlayout,	{ .i = 0 } }, \
     1.9  	{ MODKEY,			XK_F2,	setlayout,	{ .i = 1 } }, \
    1.10  	{ MODKEY,			XK_F3,	setlayout,	{ .i = 2 } }, \
    1.11 @@ -90,7 +91,7 @@
    1.12  	{ MODKEY,			XK_F5,	setlayout,	{ .i = 4 } }, \
    1.13  	{ MODKEY,			XK_F6,	setlayout,	{ .i = 5 } }, \
    1.14  	{ MODKEY,			XK_F7,	setlayout,	{ .i = 6 } }, \
    1.15 -	{ MODKEY|ShiftMask,		XK_space,	toggleversatile,{ 0 } }, \
    1.16 +	{ MODKEY|ControlMask,		XK_space,	toggleversatile,{ 0 } }, \
    1.17  	{ MODKEY,			XK_grave,		view,		{ .i = -1 } }, \
    1.18  	{ MODKEY,			XK_1,		view,		{ .i = 0 } }, \
    1.19  	{ MODKEY,			XK_2,		view,		{ .i = 1 } }, \
    1.20 @@ -102,6 +103,8 @@
    1.21  	{ MODKEY,			XK_8,		view,		{ .i = 7 } }, \
    1.22  	{ MODKEY,			XK_9,		view,		{ .i = 8 } }, \
    1.23  	{ MODKEY,			XK_0,		view,		{ .i = 9 } }, \
    1.24 +	{ MODKEY,			XK_minus,		next_view,		{ .i = -1 } }, \
    1.25 +	{ MODKEY,			XK_equal,		next_view,		{ .i = 1 } }, \
    1.26  	{ MODKEY,			XK_BackSpace,		last_view,		{ 0 } }, \
    1.27  	{ MODKEY|ControlMask,		XK_1,		toggleview,	{ .i = 0 } }, \
    1.28  	{ MODKEY|ControlMask,		XK_2,		toggleview,	{ .i = 1 } }, \
     2.1 --- a/dwm.h	Sun Mar 22 23:26:35 2009 -0700
     2.2 +++ b/dwm.h	Mon Mar 23 00:14:48 2009 -0700
     2.3 @@ -152,6 +152,7 @@
     2.4  extern void toggleview(Arg *arg);		/* toggles the tag with arg's index (in)visible */
     2.5  extern void view(Arg *arg);			/* views the tag with arg's index */
     2.6  extern void last_view(Arg *arg);			/* go to last viewed tag */
     2.7 +extern void next_view(Arg *arg);			/* go to next/prev tag */
     2.8  
     2.9  /* util.c */
    2.10  extern void *emallocz(unsigned int size);	/* allocates zero-initialized memory, exits on error */
     3.1 --- a/layout.c	Sun Mar 22 23:26:35 2009 -0700
     3.2 +++ b/layout.c	Mon Mar 23 00:14:48 2009 -0700
     3.3 @@ -427,14 +427,14 @@
     3.4  
     3.5  void
     3.6  setlayout(Arg *arg) {
     3.7 -	unsigned int i;
     3.8 +	int i;
     3.9  
    3.10 -	if(arg->i == -1) {
    3.11 +	if(arg->i < 0) {
    3.12  		for(i = 0; i < nlayouts && lt != &layout[i]; i++);
    3.13 -		if(i == nlayouts - 1)
    3.14 -			lt = &layout[0];
    3.15 -		else
    3.16 -			lt = &layout[++i];
    3.17 +		if(arg->i == -1)
    3.18 +			lt = &layout[(i + 1) % nlayouts];
    3.19 +		else if(arg->i == -2)
    3.20 +			lt = &layout[(i - 1) >= 0 ? i - 1 : nlayouts - 1];
    3.21  	}
    3.22  	else {
    3.23  		if(arg->i < 0 || arg->i >= nlayouts)
     4.1 --- a/tag.c	Sun Mar 22 23:26:35 2009 -0700
     4.2 +++ b/tag.c	Mon Mar 23 00:14:48 2009 -0700
     4.3 @@ -164,3 +164,21 @@
     4.4  	a.i = lastview;
     4.5  	view(&a);
     4.6  }
     4.7 +
     4.8 +void
     4.9 +next_view(Arg *arg) {
    4.10 +	int i;
    4.11 +	Arg a;
    4.12 +	
    4.13 +	a.i = 0;
    4.14 +	setlayout(&a); /* back to default layout */
    4.15 +
    4.16 +	for(i = 0; i < ntags; i++) {
    4.17 +		if (seltag[i] == True) {
    4.18 +			seltag[i] = False;
    4.19 +			seltag[(i + arg->i) >= 0 ? (i + arg->i) % ntags : ntags - 1] = True;
    4.20 +			break;
    4.21 +		}
    4.22 +	}
    4.23 +	lt->arrange();
    4.24 +}