JasonWoof Got questions, comments, patches, etc.? Contact Jason Woofenden
applied Jeroen Schot's shiftview patch
authorAnselm R. Garbe <garbeam@gmail.com>
Tue, 24 Jul 2007 16:29:29 +0000 (18:29 +0200)
committerAnselm R. Garbe <garbeam@gmail.com>
Tue, 24 Jul 2007 16:29:29 +0000 (18:29 +0200)
dwm.h
event.c
tag.c

diff --git a/dwm.h b/dwm.h
index 999f027..d54fdc0 100644 (file)
--- a/dwm.h
+++ b/dwm.h
@@ -144,6 +144,7 @@ void tag(const char *arg);          /* tags sel with arg's index */
 void toggletag(const char *arg);       /* toggles sel tags with arg's index */
 void toggleview(const char *arg);      /* toggles the tag with arg's index (in)visible */
 void view(const char *arg);            /* views the tag with arg's index */
+void shiftview(const char *arg);        /* views next(1)/previous(-1) tag */
 
 /* util.c */
 void *emallocz(unsigned int size);     /* allocates zero-initialized memory, exits on error */
diff --git a/event.c b/event.c
index 3f06ea7..ac96df1 100644 (file)
--- a/event.c
+++ b/event.c
@@ -135,6 +135,10 @@ buttonpress(XEvent *e) {
                                        else
                                                toggleview(buf);
                                }
+                               else if(ev->button == Button4)
+                                       shiftview("-1");
+                               else if(ev->button == Button5)
+                                       shiftview("1");
                                return;
                        }
                }
diff --git a/tag.c b/tag.c
index c44954b..19c63b1 100644 (file)
--- a/tag.c
+++ b/tag.c
@@ -99,6 +99,24 @@ settags(Client *c, Client *trans) {
                        c->tags[i] = seltag[i];
 }
 
+void 
+shiftview(const char *arg) {
+       int i, j;
+
+       for(i = 0; !seltag[i]; i++);
+       for(j = i + 1; j < ntags && !seltag[j]; j++);
+       if(j < ntags)
+               return; /* more then one tag selected */
+       seltag[i] = False;
+       i += arg ? atoi(arg) : 0;
+       if(i < 0)
+               i = ntags - 1;
+       else if(i >= ntags)
+               i = 0;
+       seltag[i] = True;
+       lt->arrange();
+}
+
 void
 tag(const char *arg) {
        int i;