dwm-combo-6.0.diff - sites - public wiki contents of suckless.org
(HTM) git clone git://git.suckless.org/sites
(DIR) Log
(DIR) Files
(DIR) Refs
---
dwm-combo-6.0.diff (1754B)
---
1 diff -r c361034c5a1c dwm.c
2 --- a/dwm.c Sat Sep 11 19:00:18 2010 +0000
3 +++ b/dwm.c Thu Nov 25 22:54:04 2010 -0800
4 @@ -243,6 +243,11 @@
5 static int xerrorstart(Display *dpy, XErrorEvent *ee);
6 static void zoom(const Arg *arg);
7
8 +static void keyrelease(XEvent *e);
9 +static void combotag(const Arg *arg);
10 +static void comboview(const Arg *arg);
11 +
12 +
13 /* variables */
14 static const char broken[] = "broken";
15 static char stext[256];
16 @@ -253,6 +258,7 @@
17 static unsigned int numlockmask = 0;
18 static void (*handler[LASTEvent]) (XEvent *) = {
19 [ButtonPress] = buttonpress,
20 + [ButtonRelease] = keyrelease,
21 [ClientMessage] = clientmessage,
22 [ConfigureRequest] = configurerequest,
23 [ConfigureNotify] = configurenotify,
24 @@ -260,6 +266,7 @@
25 [EnterNotify] = enternotify,
26 [Expose] = expose,
27 [FocusIn] = focusin,
28 + [KeyRelease] = keyrelease,
29 [KeyPress] = keypress,
30 [MappingNotify] = mappingnotify,
31 [MapRequest] = maprequest,
32 @@ -282,6 +289,42 @@
33 struct NumTags { char limitexceeded[LENGTH(tags) > 31 ? -1 : 1]; };
34
35 /* function implementations */
36 +static int combo = 0;
37 +
38 +void
39 +keyrelease(XEvent *e) {
40 + combo = 0;
41 +}
42 +
43 +void
44 +combotag(const Arg *arg) {
45 + if(selmon->sel && arg->ui & TAGMASK) {
46 + if (combo) {
47 + selmon->sel->tags |= arg->ui & TAGMASK;
48 + } else {
49 + combo = 1;
50 + selmon->sel->tags = arg->ui & TAGMASK;
51 + }
52 + focus(NULL);
53 + arrange(selmon);
54 + }
55 +}
56 +
57 +void
58 +comboview(const Arg *arg) {
59 + unsigned newtags = arg->ui & TAGMASK;
60 + if (combo) {
61 + selmon->tagset[selmon->seltags] |= newtags;
62 + } else {
63 + selmon->seltags ^= 1; /*toggle tagset*/
64 + combo = 1;
65 + if (newtags)
66 + selmon->tagset[selmon->seltags] = newtags;
67 + }
68 + focus(NULL);
69 + arrange(selmon);
70 +}
71 +
72 void
73 applyrules(Client *c) {
74 const char *class, *instance;