7 #include <string.h> |
7 #include <string.h> |
8 #include <X11/Xatom.h> |
8 #include <X11/Xatom.h> |
9 #include <X11/Xutil.h> |
9 #include <X11/Xutil.h> |
10 |
10 |
11 /* static functions */ |
11 /* static functions */ |
|
12 |
|
13 static void |
|
14 grabbutton(Client *c, unsigned int button, unsigned int modifier) |
|
15 { |
|
16 XGrabButton(dpy, button, modifier, c->win, False, BUTTONMASK, |
|
17 GrabModeAsync, GrabModeSync, None, None); |
|
18 XGrabButton(dpy, button, modifier | LockMask, c->win, False, BUTTONMASK, |
|
19 GrabModeAsync, GrabModeSync, None, None); |
|
20 XGrabButton(dpy, button, modifier | numlockmask, c->win, False, BUTTONMASK, |
|
21 GrabModeAsync, GrabModeSync, None, None); |
|
22 XGrabButton(dpy, button, modifier | numlockmask | LockMask, c->win, False, BUTTONMASK, |
|
23 GrabModeAsync, GrabModeSync, None, None); |
|
24 } |
12 |
25 |
13 static void |
26 static void |
14 resizetitle(Client *c) |
27 resizetitle(Client *c) |
15 { |
28 { |
16 int i; |
29 int i; |
29 else |
42 else |
30 XMoveResizeWindow(dpy, c->title, c->tx + 2 * sw, c->ty, c->tw, c->th); |
43 XMoveResizeWindow(dpy, c->title, c->tx + 2 * sw, c->ty, c->tw, c->th); |
31 |
44 |
32 } |
45 } |
33 |
46 |
|
47 static void |
|
48 ungrabbutton(Client *c, unsigned int button, unsigned int modifier) |
|
49 { |
|
50 XUngrabButton(dpy, button, modifier, c->win); |
|
51 XUngrabButton(dpy, button, modifier | LockMask, c->win); |
|
52 XUngrabButton(dpy, button, modifier | numlockmask, c->win); |
|
53 XUngrabButton(dpy, button, modifier | numlockmask | LockMask, c->win); |
|
54 } |
|
55 |
34 static int |
56 static int |
35 xerrordummy(Display *dsply, XErrorEvent *ee) |
57 xerrordummy(Display *dsply, XErrorEvent *ee) |
36 { |
58 { |
37 return 0; |
59 return 0; |
38 } |
60 } |
228 if(clients) |
253 if(clients) |
229 clients->prev = c; |
254 clients->prev = c; |
230 c->next = clients; |
255 c->next = clients; |
231 clients = c; |
256 clients = c; |
232 |
257 |
233 XGrabButton(dpy, Button1, MODKEY, c->win, False, BUTTONMASK, |
258 grabbutton(c, Button1, MODKEY); |
234 GrabModeAsync, GrabModeSync, None, None); |
259 grabbutton(c, Button2, MODKEY); |
235 XGrabButton(dpy, Button1, MODKEY | LockMask, c->win, False, BUTTONMASK, |
260 grabbutton(c, Button3, MODKEY); |
236 GrabModeAsync, GrabModeSync, None, None); |
|
237 XGrabButton(dpy, Button1, MODKEY | numlockmask, c->win, False, BUTTONMASK, |
|
238 GrabModeAsync, GrabModeSync, None, None); |
|
239 XGrabButton(dpy, Button1, MODKEY | numlockmask | LockMask, c->win, False, BUTTONMASK, |
|
240 GrabModeAsync, GrabModeSync, None, None); |
|
241 |
|
242 XGrabButton(dpy, Button2, MODKEY, c->win, False, BUTTONMASK, |
|
243 GrabModeAsync, GrabModeSync, None, None); |
|
244 XGrabButton(dpy, Button2, MODKEY | LockMask, c->win, False, BUTTONMASK, |
|
245 GrabModeAsync, GrabModeSync, None, None); |
|
246 XGrabButton(dpy, Button2, MODKEY | numlockmask, c->win, False, BUTTONMASK, |
|
247 GrabModeAsync, GrabModeSync, None, None); |
|
248 XGrabButton(dpy, Button2, MODKEY | numlockmask | LockMask, c->win, False, BUTTONMASK, |
|
249 GrabModeAsync, GrabModeSync, None, None); |
|
250 |
|
251 XGrabButton(dpy, Button3, MODKEY, c->win, False, BUTTONMASK, |
|
252 GrabModeAsync, GrabModeSync, None, None); |
|
253 XGrabButton(dpy, Button3, MODKEY | LockMask, c->win, False, BUTTONMASK, |
|
254 GrabModeAsync, GrabModeSync, None, None); |
|
255 XGrabButton(dpy, Button3, MODKEY | numlockmask, c->win, False, BUTTONMASK, |
|
256 GrabModeAsync, GrabModeSync, None, None); |
|
257 XGrabButton(dpy, Button3, MODKEY | numlockmask | LockMask, c->win, False, BUTTONMASK, |
|
258 GrabModeAsync, GrabModeSync, None, None); |
|
259 |
261 |
260 settags(c); |
262 settags(c); |
261 if(!c->isfloat) |
263 if(!c->isfloat) |
262 c->isfloat = trans |
264 c->isfloat = trans |
263 || (c->maxw && c->minw && |
265 || (c->maxw && c->minw && |