|
|
@ -124,6 +124,7 @@ struct Monitor { |
|
|
|
int screen_number; |
|
|
|
float mfact; |
|
|
|
int by, btx; /* bar geometry */ |
|
|
|
int my, mh; /* vertical screen size*/ |
|
|
|
int wx, wy, ww, wh; /* window area */ |
|
|
|
unsigned int seltags; |
|
|
|
unsigned int sellt; |
|
|
@ -209,6 +210,7 @@ static void toggleview(const Arg *arg); |
|
|
|
static void unmanage(Client *c); |
|
|
|
static void unmapnotify(XEvent *e); |
|
|
|
static void updategeom(void); |
|
|
|
static void updatebarpos(Monitor *m); |
|
|
|
static void updatebars(void); |
|
|
|
static void updatenumlockmask(void); |
|
|
|
static void updatesizehints(Client *c); |
|
|
@ -389,7 +391,7 @@ buttonpress(XEvent *e) { |
|
|
|
XButtonPressedEvent *ev = &e->xbutton; |
|
|
|
|
|
|
|
click = ClkRootWin; |
|
|
|
if(ev->window == selmon->barwin) { |
|
|
|
if(ev->window == selmon->barwin && ev->x >= selmon->btx) { |
|
|
|
i = 0; |
|
|
|
x = selmon->btx; |
|
|
|
do |
|
|
@ -597,6 +599,7 @@ die(const char *errstr, ...) { |
|
|
|
|
|
|
|
void |
|
|
|
drawbar(Monitor *m) { |
|
|
|
char buf[2]; |
|
|
|
int x; |
|
|
|
unsigned int i, occ = 0, urg = 0; |
|
|
|
unsigned long *col; |
|
|
@ -613,11 +616,11 @@ drawbar(Monitor *m) { |
|
|
|
dc.x = 0; |
|
|
|
#ifdef XINERAMA |
|
|
|
{ |
|
|
|
/* |
|
|
|
dc.w = TEXTW(m->symbol); |
|
|
|
drawtext(NULL, selmon == m ? dc.sel : dc.norm, False); |
|
|
|
buf[0] = m->screen_number + '0'; |
|
|
|
buf[1] = '\0'; |
|
|
|
dc.w = TEXTW(buf); |
|
|
|
drawtext(buf, selmon == m ? dc.sel : dc.norm, True); |
|
|
|
dc.x += dc.w; |
|
|
|
*/ |
|
|
|
} |
|
|
|
#endif /* XINERAMA */ |
|
|
|
m->btx = dc.x; |
|
|
@ -1525,7 +1528,7 @@ tile(Monitor *m) { |
|
|
|
void |
|
|
|
togglebar(const Arg *arg) { |
|
|
|
selmon->showbar = !selmon->showbar; |
|
|
|
updategeom(); |
|
|
|
updatebarpos(selmon); |
|
|
|
XMoveResizeWindow(dpy, selmon->barwin, selmon->wx, selmon->by, selmon->ww, bh); |
|
|
|
arrange(); |
|
|
|
} |
|
|
@ -1614,6 +1617,19 @@ updatebars(void) { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
void |
|
|
|
updatebarpos(Monitor *m) { |
|
|
|
m->wy = m->my; |
|
|
|
m->wh = m->mh; |
|
|
|
if(m->showbar) { |
|
|
|
m->wh -= bh; |
|
|
|
m->by = m->topbar ? m->wy : m->wy + m->wh; |
|
|
|
m->wy = m->topbar ? m->wy + bh : m->wy; |
|
|
|
} |
|
|
|
else |
|
|
|
m->by = -bh; |
|
|
|
} |
|
|
|
|
|
|
|
void |
|
|
|
updategeom(void) { |
|
|
|
int i, n; |
|
|
@ -1639,9 +1655,9 @@ updategeom(void) { |
|
|
|
for(i = 0, m = newmons; m; m = m->next, i++) { |
|
|
|
m->screen_number = info[i].screen_number; |
|
|
|
m->wx = info[i].x_org; |
|
|
|
m->wy = info[i].y_org; |
|
|
|
m->my = m->wy = info[i].y_org; |
|
|
|
m->ww = info[i].width; |
|
|
|
m->wh = info[i].height; |
|
|
|
m->mh = m->wh = info[i].height; |
|
|
|
} |
|
|
|
XFree(info); |
|
|
|
} |
|
|
@ -1651,9 +1667,9 @@ updategeom(void) { |
|
|
|
{ |
|
|
|
m->screen_number = 0; |
|
|
|
m->wx = sx; |
|
|
|
m->wy = sy; |
|
|
|
m->my = m->wy = sy; |
|
|
|
m->ww = sw; |
|
|
|
m->wh = sh; |
|
|
|
m->mh = m->wh = sh; |
|
|
|
} |
|
|
|
|
|
|
|
/* bar geometry setup */ |
|
|
@ -1665,13 +1681,7 @@ updategeom(void) { |
|
|
|
m->mfact = mfact; |
|
|
|
m->showbar = showbar; |
|
|
|
m->topbar = topbar; |
|
|
|
if(m->showbar) { |
|
|
|
m->wh -= bh; |
|
|
|
m->by = m->topbar ? m->wy : m->wy + m->wh; |
|
|
|
m->wy = m->topbar ? m->wy + bh : m->wy; |
|
|
|
} |
|
|
|
else |
|
|
|
m->by = -bh; |
|
|
|
updatebarpos(m); |
|
|
|
/* reassign all clients with same screen number */ |
|
|
|
for(c = clients; c; c = c->next) |
|
|
|
if(c->m->screen_number == m->screen_number) |
|
|
|