Xinqi Bao's Git
projects
/
dwm.git
/ commitdiff
summary
|
log
|
commit
|
diff
|
tree
raw
|
patch
|
inline
| side by side (parent:
d53ceee
)
some more refactoring, bar toggle fixes
author
Anselm R Garbe <
[email protected]
>
Mon, 22 Jun 2009 19:29:59 +0000
(20:29 +0100)
committer
Anselm R Garbe <
[email protected]
>
Mon, 22 Jun 2009 19:29:59 +0000
(20:29 +0100)
dwm.c
patch
|
blob
|
history
diff --git
a/dwm.c
b/dwm.c
index
7e4e177
..
66193ef
100644
(file)
--- a/
dwm.c
+++ b/
dwm.c
@@
-124,6
+124,7
@@
struct Monitor {
int screen_number;
float mfact;
int by, btx; /* bar geometry */
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;
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 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);
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;
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
i = 0;
x = selmon->btx;
do
@@
-597,6
+599,7
@@
die(const char *errstr, ...) {
void
drawbar(Monitor *m) {
void
drawbar(Monitor *m) {
+ char buf[2];
int x;
unsigned int i, occ = 0, urg = 0;
unsigned long *col;
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.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;
dc.x += dc.w;
- */
}
#endif /* XINERAMA */
m->btx = dc.x;
}
#endif /* XINERAMA */
m->btx = dc.x;
@@
-1525,7
+1528,7
@@
tile(Monitor *m) {
void
togglebar(const Arg *arg) {
selmon->showbar = !selmon->showbar;
void
togglebar(const Arg *arg) {
selmon->showbar = !selmon->showbar;
- update
geom(
);
+ update
barpos(selmon
);
XMoveResizeWindow(dpy, selmon->barwin, selmon->wx, selmon->by, selmon->ww, bh);
arrange();
}
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;
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;
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->ww = info[i].width;
- m->wh = info[i].height;
+ m->
mh = m->
wh = info[i].height;
}
XFree(info);
}
}
XFree(info);
}
@@
-1651,9
+1667,9
@@
updategeom(void) {
{
m->screen_number = 0;
m->wx = sx;
{
m->screen_number = 0;
m->wx = sx;
- m->wy = sy;
+ m->
my = m->
wy = sy;
m->ww = sw;
m->ww = sw;
- m->wh = sh;
+ m->
mh = m->
wh = sh;
}
/* bar geometry setup */
}
/* bar geometry setup */
@@
-1665,13
+1681,7
@@
updategeom(void) {
m->mfact = mfact;
m->showbar = showbar;
m->topbar = topbar;
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)
/* reassign all clients with same screen number */
for(c = clients; c; c = c->next)
if(c->m->screen_number == m->screen_number)