about summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--client.c24
-rw-r--r--dwm.h6
-rw-r--r--event.c8
-rw-r--r--util.c28
4 files changed, 12 insertions, 54 deletions
diff --git a/client.c b/client.c
index 029a59c..2a981fc 100644
--- a/client.c
+++ b/client.c
@@ -28,17 +28,19 @@ next(Client *c)
 void
 zoom(Arg *arg)
 {
-	Client **l, *old;
+	Client **l;
 
-	if(!(old = sel))
+	if(!sel)
 		return;
 
+	if(sel == next(clients)) 
+		sel = next(sel->next);
+
 	for(l = &clients; *l && *l != sel; l = &(*l)->next);
 	*l = sel->next;
 
-	old->next = clients; /* pop */
-	clients = old;
-	sel = old;
+	sel->next = clients; /* pop */
+	clients = sel;
 	arrange(NULL);
 	focus(sel);
 }
@@ -54,7 +56,6 @@ max(Arg *arg)
 	sel->h = sh - 2 * sel->border - bh;
 	craise(sel);
 	resize(sel, False);
-	discard_events(EnterWindowMask);
 }
 
 void
@@ -65,9 +66,6 @@ view(Arg *arg)
 	tsel = arg->i;
 	arrange(NULL);
 
-	if((c = next(clients)))
-		focus(c);
-
 	for(c = clients; c; c = next(c->next))
 		draw_client(c);
 	draw_bar();
@@ -120,7 +118,6 @@ floating(Arg *arg)
 			focus(sel);
 		}
 	}
-	discard_events(EnterWindowMask);
 }
 
 void
@@ -171,13 +168,12 @@ tiling(Arg *arg)
 		else
 			ban_client(c);
 	}
-	if(sel && !sel->tags[tsel]) {
+	if(!sel || (sel && !sel->tags[tsel])) {
 		if((sel = next(clients))) {
 			craise(sel);
 			focus(sel);
 		}
 	}
-	discard_events(EnterWindowMask);
 }
 
 void
@@ -323,14 +319,16 @@ void
 focus(Client *c)
 {
 	Client *old = sel;
+	XEvent ev;
 
+	XFlush(dpy);
 	sel = c;
 	if(old && old != c)
 		draw_client(old);
 	draw_client(c);
 	XSetInputFocus(dpy, c->win, RevertToPointerRoot, CurrentTime);
 	XFlush(dpy);
-	discard_events(EnterWindowMask);
+	while(XCheckMaskEvent(dpy, EnterWindowMask, &ev));
 }
 
 static void
diff --git a/dwm.h b/dwm.h
index 29aa6a2..113e861 100644
--- a/dwm.h
+++ b/dwm.h
@@ -137,9 +137,6 @@ extern unsigned int textnw(char *text, unsigned int len);
 extern unsigned int textw(char *text);
 extern unsigned int texth(void);
 
-/* event.c */
-extern void discard_events(long even_mask);
-
 /* dev.c */
 extern void update_keys(void);
 extern void keypress(XEvent *e);
@@ -155,8 +152,5 @@ extern void quit(Arg *arg);
 /* util.c */
 extern void error(const char *errstr, ...);
 extern void *emallocz(unsigned int size);
-extern void *emalloc(unsigned int size);
-extern void *erealloc(void *ptr, unsigned int size);
-extern char *estrdup(const char *str);
 extern void spawn(Arg *arg);
 extern void swap(void **p1, void **p2);
diff --git a/event.c b/event.c
index 4edf139..b027a3e 100644
--- a/event.c
+++ b/event.c
@@ -4,6 +4,7 @@
  */
 
 #include <fcntl.h>
+#include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
 #include <X11/keysym.h>
@@ -37,13 +38,6 @@ void (*handler[LASTEvent]) (XEvent *) = {
 	[UnmapNotify] = unmapnotify
 };
 
-void
-discard_events(long even_mask)
-{
-	XEvent ev;
-	while(XCheckMaskEvent(dpy, even_mask, &ev));
-}
-
 static void
 buttonpress(XEvent *e)
 {
diff --git a/util.c b/util.c
index d8e6612..e95dfc5 100644
--- a/util.c
+++ b/util.c
@@ -6,7 +6,6 @@
 #include <stdarg.h>
 #include <stdio.h>
 #include <stdlib.h>
-#include <string.h>
 #include <sys/types.h>
 #include <sys/wait.h>
 #include <unistd.h>
@@ -39,33 +38,6 @@ emallocz(unsigned int size)
 	return res;
 }
 
-void *
-emalloc(unsigned int size)
-{
-	void *res = malloc(size);
-	if(!res)
-		bad_malloc(size);
-	return res;
-}
-
-void *
-erealloc(void *ptr, unsigned int size)
-{
-	void *res = realloc(ptr, size);
-	if(!res)
-		bad_malloc(size);
-	return res;
-}
-
-char *
-estrdup(const char *str)
-{
-	char *res = strdup(str);
-	if(!res)
-		bad_malloc(strlen(str));
-	return res;
-}
-
 void
 swap(void **p1, void **p2)
 {
fcbd7d7f1dcfae7b9ae659ccea4944b95a29'>dc9afcbd ^
c442a5ad ^
dc9afcbd ^
c442a5ad ^
3ecee22a ^

9a6f8798 ^
3ecee22a ^

6c96a437 ^
dc9afcbd ^




9a6f8798 ^
dc9afcbd ^

4a943d4e ^
















dc9afcbd ^
4a943d4e ^















3ecee22a ^
4a943d4e ^













1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153