about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorAnselm R. Garbe <arg@suckless.org>2007-01-22 10:35:58 +0100
committerAnselm R. Garbe <arg@suckless.org>2007-01-22 10:35:58 +0100
commitfcd98308ba65c8872b485ac7f1800841b0a29e5c (patch)
tree5a3edcf206d73c9135d3839d0c47b02a91c7d2db
parentb233089815367983e07939b2aabb999fdc359f91 (diff)
downloaddwm-fcd98308ba65c8872b485ac7f1800841b0a29e5c.tar.gz
this variant is known to work, but focus() is ugly - we need in general a better way to handle multihead, this issel-stuff looks awkward (maybe it might be a good idea to set sel to NULL but to introduce a Client *revert which is set if a screen is unfocused, have to think about it further).
-rw-r--r--client.c20
-rw-r--r--event.c2
2 files changed, 13 insertions, 9 deletions
diff --git a/client.c b/client.c
index 177eb94..510ec59 100644
--- a/client.c
+++ b/client.c
@@ -81,7 +81,7 @@ void
 focus(Client *c) {
 	Client *old = sel;
 
-	if(!issel || (c && !isvisible(c)))
+	if(c && !isvisible(c))
 		return;
 
 	if(old && old != c) {
@@ -89,14 +89,18 @@ focus(Client *c) {
 		XSetWindowBorder(dpy, old->win, dc.norm[ColBorder]);
 	}
 	if(c) {
-		detachstack(c);
-		c->snext = stack;
-		stack = c;
-		grabbuttons(c, True);
-		XSetWindowBorder(dpy, c->win, dc.sel[ColBorder]);
-		XSetInputFocus(dpy, c->win, RevertToPointerRoot, CurrentTime);
+		if(issel) {
+			detachstack(c);
+			c->snext = stack;
+			stack = c;
+			grabbuttons(c, True);
+			XSetWindowBorder(dpy, c->win, dc.sel[ColBorder]);
+			XSetInputFocus(dpy, c->win, RevertToPointerRoot, CurrentTime);
+		}
+		else
+			XSetWindowBorder(dpy, c->win, dc.norm[ColBorder]);
 	}
-	else
+	else if(issel)
 		XSetInputFocus(dpy, root, RevertToPointerRoot, CurrentTime);
 	sel = c;
 	drawstatus();
diff --git a/event.c b/event.c
index e0718d3..2e021d5 100644
--- a/event.c
+++ b/event.c
@@ -269,8 +269,8 @@ leavenotify(XEvent *e) {
 	XCrossingEvent *ev = &e->xcrossing;
 
 	if((ev->window == root) && !ev->same_screen) {
-		focus(NULL);
 		issel = False;
+		focus(sel);
 	}
 }
 
8a56cdfeb0d57b5fd95a6d0e2'>^
e56ceb0 ^


28fc9fa ^
2a09617 ^
e56ceb0 ^



2a09617 ^
e56ceb0 ^





ccf5c02 ^




e56ceb0 ^

28fc9fa ^





dfe114b ^

28fc9fa ^
dfe114b ^
28fc9fa ^


e56ceb0 ^






28fc9fa ^

28fc9fa ^

e56ceb0 ^





ccf5c02 ^



e56ceb0 ^



ccf5c02 ^


e56ceb0 ^
ccf5c02 ^


e56ceb0 ^











28fc9fa ^

















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