c->h = wa->height;
c->th = bh;
- if(c->y < bh)
+ c->border = 1;
+ setsize(c);
+
+ if(c->h != sh && c->y < bh)
c->y = c->ty = bh;
- c->border = 1;
c->proto = getproto(c->win);
- setsize(c);
XSelectInput(dpy, c->win,
StructureNotifyMask | PropertyChangeMask | EnterWindowMask);
XGetTransientForHint(dpy, c->win, &trans);
twa.override_redirect = 1;
twa.background_pixmap = ParentRelative;
- twa.event_mask = ExposureMask;
+ twa.event_mask = ExposureMask | EnterWindowMask;
c->title = XCreateWindow(dpy, root, c->tx, c->ty, c->tw, c->th,
0, DefaultDepth(dpy, screen), CopyFromParent,
DefaultVisual(dpy, screen),
CWOverrideRedirect | CWBackPixmap | CWEventMask, &twa);
- settags(c);
-
if(clients)
clients->prev = c;
c->next = clients;
XGrabButton(dpy, Button3, MODKEY, c->win, False, BUTTONMASK,
GrabModeAsync, GrabModeSync, None, None);
+ settags(c);
if(!c->isfloat)
- c->isfloat = trans || (c->maxw && c->minw &&
- (c->maxw == c->minw) && (c->maxh == c->minh));
-
-
+ c->isfloat = trans
+ || (c->maxw && c->minw &&
+ c->maxw == c->minw && c->maxh == c->minh)
+ || (c->w == sw && c->h == sh);
settitle(c);
arrange(NULL);
{
int bottom = c->y + c->h;
int right = c->x + c->w;
+ XConfigureEvent e;
XWindowChanges wc;
if(sizehints) {
if(c->maxh && c->h > c->maxh)
c->h = c->maxh;
}
+ if(c->x > right) /* might happen on restart */
+ c->x = right - c->w;
+ if(c->y > bottom)
+ c->y = bottom - c->h;
if(sticky == TopRight || sticky == BotRight)
c->x = right - c->w;
if(sticky == BotLeft || sticky == BotRight)
c->y = bottom - c->h;
resizetitle(c);
-
- if(c->tags[tsel])
- wc.x = c->x;
- else
- wc.x = c->x + 2 * sw;
+ wc.x = c->x;
wc.y = c->y;
wc.width = c->w;
wc.height = c->h;
wc.border_width = 1;
- XConfigureWindow(dpy, c->win, CWX|CWY|CWWidth|CWHeight|CWBorderWidth, &wc);
+ XConfigureWindow(dpy, c->win,
+ CWX|CWY|CWWidth|CWHeight|CWBorderWidth, &wc);
+
+ e.type = ConfigureNotify;
+ e.event = c->win;
+ e.window = c->win;
+ e.x = c->x;
+ e.y = c->y;
+ e.width = c->w;
+ e.height = c->h;
+ e.border_width = c->border;
+ e.above = None;
+ e.override_redirect = False;
+ XSendEvent(dpy, c->win, False, StructureNotifyMask, (XEvent *)&e);
XSync(dpy, False);
}