dwm.c
changeset 1166 bf38679903b3
parent 1165 3ac7eb240b52
child 1169 22c669b2dd36
equal deleted inserted replaced
1165:3ac7eb240b52 1166:bf38679903b3
   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;
  1465 		drawbar();
  1447 		drawbar();
  1466 }
  1448 }
  1467 
  1449 
  1468 void
  1450 void
  1469 setmfact(const char *arg) {
  1451 setmfact(const char *arg) {
  1470 	double delta;
  1452 	double d;
  1471 
  1453 
  1472 	if(!arg || lt->isfloating)
  1454 	if(lt->isfloating)
  1473 		return;
  1455 		return;
  1474 	delta = strtod(arg, NULL);
  1456 	if(!arg)
  1475 	if(arg[0] == '-' || arg[0] == '+') {
  1457 		mfact = MFACT;
  1476 		if(mfact + delta < 0.1 || mfact + delta > 0.9)
  1458 	else {
       
  1459 		d = strtod(arg, NULL);
       
  1460 		if(arg[0] == '-' || arg[0] == '+')
       
  1461 			d += mfact;
       
  1462 		if(d < 0.1 || d > 0.9)
  1477 			return;
  1463 			return;
  1478 		mfact += delta;
  1464 		mfact = d;
  1479 	}
       
  1480 	else {
       
  1481 		if(delta < 0.1 || delta > 0.9)
       
  1482 			return;
       
  1483 		mfact = delta;
       
  1484 	}
  1465 	}
  1485 	setgeom(geom->symbol);
  1466 	setgeom(geom->symbol);
  1486 }
  1467 }
  1487 
  1468 
  1488 void
  1469 void
  1499 	sx = 0;
  1480 	sx = 0;
  1500 	sy = 0;
  1481 	sy = 0;
  1501 	sw = DisplayWidth(dpy, screen);
  1482 	sw = DisplayWidth(dpy, screen);
  1502 	sh = DisplayHeight(dpy, screen);
  1483 	sh = DisplayHeight(dpy, screen);
  1503 	bh = dc.font.height + 2;
  1484 	bh = dc.font.height + 2;
       
  1485 	mfact = MFACT;
  1504 	geom = &geoms[0];
  1486 	geom = &geoms[0];
  1505 	geom->apply();
  1487 	geom->apply();
  1506 
  1488 
  1507 	/* init atoms */
  1489 	/* init atoms */
  1508 	wmatom[WMProtocols] = XInternAtom(dpy, "WM_PROTOCOLS", False);
  1490 	wmatom[WMProtocols] = XInternAtom(dpy, "WM_PROTOCOLS", False);