/* Global data */
static win_t *root;
+static win_t *last;
static int running;
static void *cache;
static Atom atoms[NATOMS];
{
Window trans;
XWindowAttributes attr;
- if (XGetWindowAttributes(dpy, xid, &attr))
- if (attr.override_redirect)
+ if (XGetWindowAttributes(dpy, xid, &attr)) {
+ if (attr.override_redirect) {
+ printf("win_new: x11=(%p,%d) -- override\n",
+ dpy, (int)xid);
return NULL;
+ }
+ }
win_t *win = new0(win_t);
win->x = attr.x;
static void win_free(win_t *win)
{
+ if (win == last)
+ last = NULL;
free(win->sys);
free(win);
}
cre->window, cre->value_mask,
cre->height, cre->width, cre->x, cre->y);
if ((win = win_find(dpy,cre->window,1))) {
+ int border_width = (win->type == TYPE_TOOLBAR ? 0 : border);
XSendEvent(dpy, cre->window, False, StructureNotifyMask, &(XEvent){
- .xconfigure.type = ConfigureNotify,
- .xconfigure.display = win->sys->dpy,
- .xconfigure.event = win->sys->xid,
- .xconfigure.window = win->sys->xid,
- .xconfigure.x = win->x,
- .xconfigure.y = win->y,
- .xconfigure.width = win->w,
- .xconfigure.height = win->h,
- .xconfigure.border_width = border,
+ .xconfigure.type = ConfigureNotify,
+ .xconfigure.display = win->sys->dpy,
+ .xconfigure.event = win->sys->xid,
+ .xconfigure.window = win->sys->xid,
+ .xconfigure.x = win->x,
+ .xconfigure.y = win->y,
+ .xconfigure.width = win->w,
+ .xconfigure.height = win->h,
+ .xconfigure.border_width = border_width,
});
XSync(win->sys->dpy, False);
}
//win_msg(win, WM_FOCUS);
/* Set border on focused window */
- static win_t *last = NULL;
if (last)
XSetWindowBorder(last->sys->dpy, last->sys->xid, colors[CLR_UNFOCUS]);
XSync(win->sys->dpy, False);
PropModeReplace, (unsigned char*)0, 0);
/* Update border */
- if (state == ST_SHOW || state == ST_MAX || state == ST_SHADE)
- XSetWindowBorderWidth(win->sys->dpy, win->sys->xid, border);
- else if (state == ST_FULL)
+ if (win->type == TYPE_TOOLBAR || state == ST_FULL)
XSetWindowBorderWidth(win->sys->dpy, win->sys->xid, 0);
+ else if (state == ST_SHOW || state == ST_MAX || state == ST_SHADE)
+ XSetWindowBorderWidth(win->sys->dpy, win->sys->xid, border);
/* Map/Unmap window */
if (state == ST_SHOW || state == ST_FULL || state == ST_MAX || state == ST_SHADE)
atoms[NET_TYPE] = XInternAtom(dpy, "_NET_WM_WINDOW_TYPE", False);
atoms[NET_DIALOG] = XInternAtom(dpy, "_NET_WM_WINDOW_TYPE_DIALOG", False);
- colors[CLR_FOCUS] = get_color(dpy, "#a0a0ff");
- colors[CLR_UNFOCUS] = get_color(dpy, "#101066");
+ //colors[CLR_FOCUS] = get_color(dpy, "#a0a0ff");
+ //colors[CLR_UNFOCUS] = get_color(dpy, "#101066");
+ colors[CLR_FOCUS] = get_color(dpy, "#ff6060");
+ colors[CLR_UNFOCUS] = get_color(dpy, "#d8d8ff");
colors[CLR_URGENT] = get_color(dpy, "#ff0000");
//printf("colors = #%06lx #%06lx #%06lx\n", colors[0], colors[1], colors[2]);