|
|
@@ -212,6 +212,7 @@ char stext[256], buf[256];
|
|
|
int screen, sx, sy, sw, sh;
|
|
|
int (*xerrorxlib)(Display *, XErrorEvent *);
|
|
|
int bx, by, bw, bh, blw, bgw, mx, my, mw, mh, mox, moy, mow, moh, tx, ty, tw, th, wx, wy, ww, wh;
|
|
|
+double mfact;
|
|
|
unsigned int numlockmask = 0;
|
|
|
void (*handler[LASTEvent]) (XEvent *) = {
|
|
|
[ButtonPress] = buttonpress,
|
|
|
@@ -805,39 +806,20 @@ gettextprop(Window w, Atom atom, char *text, unsigned int size) {
|
|
|
|
|
|
void
|
|
|
grabbuttons(Client *c, Bool focused) {
|
|
|
- XUngrabButton(dpy, AnyButton, AnyModifier, c->win);
|
|
|
+ int i, j;
|
|
|
+ unsigned int buttons[] = { Button1, Button2, Button3 };
|
|
|
+ unsigned int modifiers[] = { MODKEY, MODKEY|LockMask, MODKEY|numlockmask,
|
|
|
+ MODKEY|numlockmask|LockMask} ;
|
|
|
|
|
|
- if(focused) {
|
|
|
- XGrabButton(dpy, Button1, MODKEY, c->win, False, BUTTONMASK,
|
|
|
- GrabModeAsync, GrabModeSync, None, None);
|
|
|
- XGrabButton(dpy, Button1, MODKEY|LockMask, c->win, False, BUTTONMASK,
|
|
|
- GrabModeAsync, GrabModeSync, None, None);
|
|
|
- XGrabButton(dpy, Button1, MODKEY|numlockmask, c->win, False, BUTTONMASK,
|
|
|
- GrabModeAsync, GrabModeSync, None, None);
|
|
|
- XGrabButton(dpy, Button1, MODKEY|numlockmask|LockMask, c->win, False, BUTTONMASK,
|
|
|
- GrabModeAsync, GrabModeSync, None, None);
|
|
|
-
|
|
|
- XGrabButton(dpy, Button2, MODKEY, c->win, False, BUTTONMASK,
|
|
|
- GrabModeAsync, GrabModeSync, None, None);
|
|
|
- XGrabButton(dpy, Button2, MODKEY|LockMask, c->win, False, BUTTONMASK,
|
|
|
- GrabModeAsync, GrabModeSync, None, None);
|
|
|
- XGrabButton(dpy, Button2, MODKEY|numlockmask, c->win, False, BUTTONMASK,
|
|
|
- GrabModeAsync, GrabModeSync, None, None);
|
|
|
- XGrabButton(dpy, Button2, MODKEY|numlockmask|LockMask, c->win, False, BUTTONMASK,
|
|
|
- GrabModeAsync, GrabModeSync, None, None);
|
|
|
-
|
|
|
- XGrabButton(dpy, Button3, MODKEY, c->win, False, BUTTONMASK,
|
|
|
- GrabModeAsync, GrabModeSync, None, None);
|
|
|
- XGrabButton(dpy, Button3, MODKEY|LockMask, c->win, False, BUTTONMASK,
|
|
|
- GrabModeAsync, GrabModeSync, None, None);
|
|
|
- XGrabButton(dpy, Button3, MODKEY|numlockmask, c->win, False, BUTTONMASK,
|
|
|
- GrabModeAsync, GrabModeSync, None, None);
|
|
|
- XGrabButton(dpy, Button3, MODKEY|numlockmask|LockMask, c->win, False, BUTTONMASK,
|
|
|
- GrabModeAsync, GrabModeSync, None, None);
|
|
|
- }
|
|
|
+ XUngrabButton(dpy, AnyButton, AnyModifier, c->win);
|
|
|
+ if(focused)
|
|
|
+ for(i = 0; i < LENGTH(buttons); i++)
|
|
|
+ for(j = 0; j < LENGTH(modifiers); j++)
|
|
|
+ XGrabButton(dpy, buttons[i], modifiers[j], c->win, False,
|
|
|
+ BUTTONMASK, GrabModeAsync, GrabModeSync, None, None);
|
|
|
else
|
|
|
- XGrabButton(dpy, AnyButton, AnyModifier, c->win, False, BUTTONMASK,
|
|
|
- GrabModeAsync, GrabModeSync, None, None);
|
|
|
+ XGrabButton(dpy, AnyButton, AnyModifier, c->win, False,
|
|
|
+ BUTTONMASK, GrabModeAsync, GrabModeSync, None, None);
|
|
|
}
|
|
|
|
|
|
void
|
|
|
@@ -1467,20 +1449,19 @@ setlayout(const char *arg) {
|
|
|
|
|
|
void
|
|
|
setmfact(const char *arg) {
|
|
|
- double delta;
|
|
|
+ double d;
|
|
|
|
|
|
- if(!arg || lt->isfloating)
|
|
|
+ if(lt->isfloating)
|
|
|
return;
|
|
|
- delta = strtod(arg, NULL);
|
|
|
- if(arg[0] == '-' || arg[0] == '+') {
|
|
|
- if(mfact + delta < 0.1 || mfact + delta > 0.9)
|
|
|
- return;
|
|
|
- mfact += delta;
|
|
|
- }
|
|
|
+ if(!arg)
|
|
|
+ mfact = MFACT;
|
|
|
else {
|
|
|
- if(delta < 0.1 || delta > 0.9)
|
|
|
+ d = strtod(arg, NULL);
|
|
|
+ if(arg[0] == '-' || arg[0] == '+')
|
|
|
+ d += mfact;
|
|
|
+ if(d < 0.1 || d > 0.9)
|
|
|
return;
|
|
|
- mfact = delta;
|
|
|
+ mfact = d;
|
|
|
}
|
|
|
setgeom(geom->symbol);
|
|
|
}
|
|
|
@@ -1501,6 +1482,7 @@ setup(void) {
|
|
|
sw = DisplayWidth(dpy, screen);
|
|
|
sh = DisplayHeight(dpy, screen);
|
|
|
bh = dc.font.height + 2;
|
|
|
+ mfact = MFACT;
|
|
|
geom = &geoms[0];
|
|
|
geom->apply();
|
|
|
|