210 /* variables */ |
210 /* variables */ |
211 char stext[256], buf[256]; |
211 char stext[256], buf[256]; |
212 int screen, sx, sy, sw, sh; |
212 int screen, sx, sy, sw, sh; |
213 int (*xerrorxlib)(Display *, XErrorEvent *); |
213 int (*xerrorxlib)(Display *, XErrorEvent *); |
214 int bx, by, bw, bh, blw, bgw, mx, my, mw, mh, mox, moy, mow, moh, tx, ty, tw, th, wx, wy, ww, wh; |
214 int bx, by, bw, bh, blw, bgw, mx, my, mw, mh, mox, moy, mow, moh, tx, ty, tw, th, wx, wy, ww, wh; |
|
215 double mfact; |
215 unsigned int numlockmask = 0; |
216 unsigned int numlockmask = 0; |
216 void (*handler[LASTEvent]) (XEvent *) = { |
217 void (*handler[LASTEvent]) (XEvent *) = { |
217 [ButtonPress] = buttonpress, |
218 [ButtonPress] = buttonpress, |
218 [ConfigureRequest] = configurerequest, |
219 [ConfigureRequest] = configurerequest, |
219 [ConfigureNotify] = configurenotify, |
220 [ConfigureNotify] = configurenotify, |
803 return True; |
804 return True; |
804 } |
805 } |
805 |
806 |
806 void |
807 void |
807 grabbuttons(Client *c, Bool focused) { |
808 grabbuttons(Client *c, Bool focused) { |
|
809 int i, j; |
|
810 unsigned int buttons[] = { Button1, Button2, Button3 }; |
|
811 unsigned int modifiers[] = { MODKEY, MODKEY|LockMask, MODKEY|numlockmask, |
|
812 MODKEY|numlockmask|LockMask} ; |
|
813 |
808 XUngrabButton(dpy, AnyButton, AnyModifier, c->win); |
814 XUngrabButton(dpy, AnyButton, AnyModifier, c->win); |
809 |
815 if(focused) |
810 if(focused) { |
816 for(i = 0; i < LENGTH(buttons); i++) |
811 XGrabButton(dpy, Button1, MODKEY, c->win, False, BUTTONMASK, |
817 for(j = 0; j < LENGTH(modifiers); j++) |
812 GrabModeAsync, GrabModeSync, None, None); |
818 XGrabButton(dpy, buttons[i], modifiers[j], c->win, False, |
813 XGrabButton(dpy, Button1, MODKEY|LockMask, c->win, False, BUTTONMASK, |
819 BUTTONMASK, GrabModeAsync, GrabModeSync, None, None); |
814 GrabModeAsync, GrabModeSync, None, None); |
|
815 XGrabButton(dpy, Button1, MODKEY|numlockmask, c->win, False, BUTTONMASK, |
|
816 GrabModeAsync, GrabModeSync, None, None); |
|
817 XGrabButton(dpy, Button1, MODKEY|numlockmask|LockMask, c->win, False, BUTTONMASK, |
|
818 GrabModeAsync, GrabModeSync, None, None); |
|
819 |
|
820 XGrabButton(dpy, Button2, MODKEY, c->win, False, BUTTONMASK, |
|
821 GrabModeAsync, GrabModeSync, None, None); |
|
822 XGrabButton(dpy, Button2, MODKEY|LockMask, c->win, False, BUTTONMASK, |
|
823 GrabModeAsync, GrabModeSync, None, None); |
|
824 XGrabButton(dpy, Button2, MODKEY|numlockmask, c->win, False, BUTTONMASK, |
|
825 GrabModeAsync, GrabModeSync, None, None); |
|
826 XGrabButton(dpy, Button2, MODKEY|numlockmask|LockMask, c->win, False, BUTTONMASK, |
|
827 GrabModeAsync, GrabModeSync, None, None); |
|
828 |
|
829 XGrabButton(dpy, Button3, MODKEY, c->win, False, BUTTONMASK, |
|
830 GrabModeAsync, GrabModeSync, None, None); |
|
831 XGrabButton(dpy, Button3, MODKEY|LockMask, c->win, False, BUTTONMASK, |
|
832 GrabModeAsync, GrabModeSync, None, None); |
|
833 XGrabButton(dpy, Button3, MODKEY|numlockmask, c->win, False, BUTTONMASK, |
|
834 GrabModeAsync, GrabModeSync, None, None); |
|
835 XGrabButton(dpy, Button3, MODKEY|numlockmask|LockMask, c->win, False, BUTTONMASK, |
|
836 GrabModeAsync, GrabModeSync, None, None); |
|
837 } |
|
838 else |
820 else |
839 XGrabButton(dpy, AnyButton, AnyModifier, c->win, False, BUTTONMASK, |
821 XGrabButton(dpy, AnyButton, AnyModifier, c->win, False, |
840 GrabModeAsync, GrabModeSync, None, None); |
822 BUTTONMASK, GrabModeAsync, GrabModeSync, None, None); |
841 } |
823 } |
842 |
824 |
843 void |
825 void |
844 grabkeys(void) { |
826 grabkeys(void) { |
845 unsigned int i, j; |
827 unsigned int i, j; |