Xinqi Bao's Git
projects
/
dwm.git
/ blobdiff
summary
|
log
|
commit
|
diff
|
tree
raw
|
inline
| side by side
applied lolilolicon's floating center patch, further investigation wrt his second...
[dwm.git]
/
dwm.c
diff --git
a/dwm.c
b/dwm.c
index
ba00afe
..
76bca38
100644
(file)
--- a/
dwm.c
+++ b/
dwm.c
@@
-615,18
+615,26
@@
configurerequest(XEvent *e) {
c->bw = ev->border_width;
else if(c->isfloating || !selmon->lt[selmon->sellt]->arrange) {
m = c->mon;
c->bw = ev->border_width;
else if(c->isfloating || !selmon->lt[selmon->sellt]->arrange) {
m = c->mon;
- if(ev->value_mask & CWX)
+ if(ev->value_mask & CWX) {
+ c->oldx = c->x;
c->x = m->mx + ev->x;
c->x = m->mx + ev->x;
- if(ev->value_mask & CWY)
+ }
+ if(ev->value_mask & CWY) {
+ c->oldy = c->y;
c->y = m->my + ev->y;
c->y = m->my + ev->y;
- if(ev->value_mask & CWWidth)
+ }
+ if(ev->value_mask & CWWidth) {
+ c->oldw = c->w;
c->w = ev->width;
c->w = ev->width;
- if(ev->value_mask & CWHeight)
+ }
+ if(ev->value_mask & CWHeight) {
+ c->oldh = c->h;
c->h = ev->height;
c->h = ev->height;
+ }
if((c->x + c->w) > m->mx + m->mw && c->isfloating)
if((c->x + c->w) > m->mx + m->mw && c->isfloating)
- c->x = m->mx + (m->mw / 2 -
c->w
/ 2); /* center in x direction */
+ c->x = m->mx + (m->mw / 2 -
WIDTH(c)
/ 2); /* center in x direction */
if((c->y + c->h) > m->my + m->mh && c->isfloating)
if((c->y + c->h) > m->my + m->mh && c->isfloating)
- c->y = m->my + (m->mh / 2 -
c->h
/ 2); /* center in y direction */
+ c->y = m->my + (m->mh / 2 -
HEIGHT(c)
/ 2); /* center in y direction */
if((ev->value_mask & (CWX|CWY)) && !(ev->value_mask & (CWWidth|CWHeight)))
configure(c);
if(ISVISIBLE(c))
if((ev->value_mask & (CWX|CWY)) && !(ev->value_mask & (CWWidth|CWHeight)))
configure(c);
if(ISVISIBLE(c))
@@
-827,13
+835,14
@@
enternotify(XEvent *e) {
if((ev->mode != NotifyNormal || ev->detail == NotifyInferior) && ev->window != root)
return;
c = wintoclient(ev->window);
if((ev->mode != NotifyNormal || ev->detail == NotifyInferior) && ev->window != root)
return;
c = wintoclient(ev->window);
- if((m = wintomon(ev->window)) && m != selmon) {
+ m = c ? c->mon : wintomon(ev->window);
+ if(m != selmon) {
unfocus(selmon->sel, True);
selmon = m;
}
unfocus(selmon->sel, True);
selmon = m;
}
- else if(
c == selmon->sel || c == NULL
)
+ else if(
!c || c == selmon->sel
)
return;
return;
- focus(
(wintoclient(ev->window))
);
+ focus(
c
);
}
void
}
void
@@
-1112,8
+1121,8
@@
manage(Window w, XWindowAttributes *wa) {
applyrules(c);
}
/* geometry */
applyrules(c);
}
/* geometry */
- c->x = c->oldx = wa->x
+ c->mon->wx
;
- c->y = c->oldy = wa->y
+ c->mon->wy
;
+ c->x = c->oldx = wa->x;
+ c->y = c->oldy = wa->y;
c->w = c->oldw = wa->width;
c->h = c->oldh = wa->height;
c->oldbw = wa->border_width;
c->w = c->oldw = wa->width;
c->h = c->oldh = wa->height;
c->oldbw = wa->border_width;