bar.c 844 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. void
  2. barhover(XEvent *e, Bar *bar)
  3. {
  4. const BarRule *br;
  5. Monitor *m = bar->mon;
  6. XMotionEvent *ev = &e->xmotion;
  7. BarArg barg = { 0, 0, 0, 0 };
  8. int r;
  9. for (r = 0; r < LENGTH(barrules); r++) {
  10. br = &barrules[r];
  11. if (br->bar != bar->idx || (br->monitor == 'A' && m != selmon) || br->hoverfunc == NULL)
  12. continue;
  13. if (br->monitor != 'A' && br->monitor != -1 && br->monitor != bar->mon->num)
  14. continue;
  15. if (bar->x[r] > ev->x || ev->x > bar->x[r] + bar->w[r])
  16. continue;
  17. barg.x = ev->x - bar->x[r];
  18. barg.y = ev->y - bar->borderpx;
  19. barg.w = bar->w[r];
  20. barg.h = bar->bh - 2 * bar->borderpx;
  21. br->hoverfunc(bar, &barg, ev);
  22. break;
  23. }
  24. }
  25. Bar *
  26. wintobar(Window win)
  27. {
  28. Monitor *m;
  29. Bar *bar;
  30. for (m = mons; m; m = m->next)
  31. for (bar = m->bar; bar; bar = bar->next)
  32. if (bar->win == win)
  33. return bar;
  34. return NULL;
  35. }