Fixed segfault issues with moving windows between monitors.
Still some issues with centerfirst states persistion when moving windows between monitors.
This commit is contained in:
parent
8ed3417a0d
commit
190d3cd72d
16
dwm.c
16
dwm.c
@ -132,6 +132,7 @@ struct Monitor {
|
|||||||
Window barwin;
|
Window barwin;
|
||||||
const Layout *lt[2];
|
const Layout *lt[2];
|
||||||
Pertag *pertag;
|
Pertag *pertag;
|
||||||
|
int centerfirst;
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
@ -668,6 +669,7 @@ createmon(void)
|
|||||||
strncpy(m->ltsymbol, layouts[0].symbol, sizeof m->ltsymbol);
|
strncpy(m->ltsymbol, layouts[0].symbol, sizeof m->ltsymbol);
|
||||||
m->pertag = ecalloc(1, sizeof(Pertag));
|
m->pertag = ecalloc(1, sizeof(Pertag));
|
||||||
m->pertag->curtag = m->pertag->prevtag = 1;
|
m->pertag->curtag = m->pertag->prevtag = 1;
|
||||||
|
m->centerfirst = centerfirst;
|
||||||
|
|
||||||
for (i = 0; i <= LENGTH(tags); i++) {
|
for (i = 0; i <= LENGTH(tags); i++) {
|
||||||
m->pertag->nmasters[i] = m->nmaster;
|
m->pertag->nmasters[i] = m->nmaster;
|
||||||
@ -679,7 +681,7 @@ createmon(void)
|
|||||||
|
|
||||||
m->pertag->showbars[i] = m->showbar;
|
m->pertag->showbars[i] = m->showbar;
|
||||||
|
|
||||||
m->pertag->centerfirst[i] = centerfirst;
|
m->pertag->centerfirst[i] = m->centerfirst;
|
||||||
}
|
}
|
||||||
|
|
||||||
return m;
|
return m;
|
||||||
@ -898,7 +900,7 @@ focusstack(const Arg *arg)
|
|||||||
if (c) {
|
if (c) {
|
||||||
focus(c);
|
focus(c);
|
||||||
restack(selmon);
|
restack(selmon);
|
||||||
//XWarpPointer(dpy, None, c->win, 0, 0, 0, 0, c->w/2, c->h/2);
|
XWarpPointer(dpy, None, c->win, 0, 0, 0, 0, c->w/2, c->h/2);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1762,13 +1764,13 @@ tile(Monitor *m)
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
c = nexttiled(m->clients);
|
c = nexttiled(m->clients);
|
||||||
if (n == 1 && m->pertag->centerfirst[m->pertag->curtag] && c && c->iscentered){
|
if (n <= 1 && selmon->centerfirst && c && c->iscentered){
|
||||||
resize(
|
resize(
|
||||||
c,
|
c,
|
||||||
m->wx + m->ww*(1 - m->mfact)/2,
|
m->wx + m->ww*(1 - m->mfact)/2,
|
||||||
m->wy,
|
m->wy,
|
||||||
m->ww * m->mfact - 2 * m->sel->bw,
|
m->ww * m->mfact - 2 * c->bw,
|
||||||
m->wh - 2 * m->sel->bw,
|
m->wh - 2 * c->bw,
|
||||||
0
|
0
|
||||||
);
|
);
|
||||||
return;
|
return;
|
||||||
@ -1857,6 +1859,7 @@ toggleview(const Arg *arg)
|
|||||||
selmon->sellt = selmon->pertag->sellts[selmon->pertag->curtag];
|
selmon->sellt = selmon->pertag->sellts[selmon->pertag->curtag];
|
||||||
selmon->lt[selmon->sellt] = selmon->pertag->ltidxs[selmon->pertag->curtag][selmon->sellt];
|
selmon->lt[selmon->sellt] = selmon->pertag->ltidxs[selmon->pertag->curtag][selmon->sellt];
|
||||||
selmon->lt[selmon->sellt^1] = selmon->pertag->ltidxs[selmon->pertag->curtag][selmon->sellt^1];
|
selmon->lt[selmon->sellt^1] = selmon->pertag->ltidxs[selmon->pertag->curtag][selmon->sellt^1];
|
||||||
|
selmon->centerfirst = selmon->pertag->centerfirst[selmon->pertag->curtag];
|
||||||
|
|
||||||
if (selmon->showbar != selmon->pertag->showbars[selmon->pertag->curtag])
|
if (selmon->showbar != selmon->pertag->showbars[selmon->pertag->curtag])
|
||||||
togglebar(NULL);
|
togglebar(NULL);
|
||||||
@ -2184,6 +2187,7 @@ view(const Arg *arg)
|
|||||||
selmon->sellt = selmon->pertag->sellts[selmon->pertag->curtag];
|
selmon->sellt = selmon->pertag->sellts[selmon->pertag->curtag];
|
||||||
selmon->lt[selmon->sellt] = selmon->pertag->ltidxs[selmon->pertag->curtag][selmon->sellt];
|
selmon->lt[selmon->sellt] = selmon->pertag->ltidxs[selmon->pertag->curtag][selmon->sellt];
|
||||||
selmon->lt[selmon->sellt^1] = selmon->pertag->ltidxs[selmon->pertag->curtag][selmon->sellt^1];
|
selmon->lt[selmon->sellt^1] = selmon->pertag->ltidxs[selmon->pertag->curtag][selmon->sellt^1];
|
||||||
|
selmon->centerfirst = selmon->pertag->centerfirst[selmon->pertag->curtag];
|
||||||
|
|
||||||
if (selmon->showbar != selmon->pertag->showbars[selmon->pertag->curtag])
|
if (selmon->showbar != selmon->pertag->showbars[selmon->pertag->curtag])
|
||||||
togglebar(NULL);
|
togglebar(NULL);
|
||||||
@ -2423,7 +2427,7 @@ togglecenterfirst(const Arg* arg)
|
|||||||
{
|
{
|
||||||
if (!arg || !selmon->lt[selmon->sellt]->arrange)
|
if (!arg || !selmon->lt[selmon->sellt]->arrange)
|
||||||
return;
|
return;
|
||||||
selmon->pertag->centerfirst[selmon->pertag->curtag] ^= 1;
|
selmon->centerfirst = selmon->pertag->centerfirst[selmon->pertag->curtag] ^= 1;
|
||||||
arrange(selmon);
|
arrange(selmon);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user