wmii

git clone git://oldgit.suckless.org/wmii/
Log | Files | Refs | README | LICENSE

commit bad686d92e2eb10559846ce9040d0a82b12b644d
parent 4302ec8f9cdb0b84e30af213a3c3a8ea5d51832a
Author: Kris Maglione <jg@suckless.org>
Date:   Mon,  3 Aug 2009 20:04:05 -0400

Allow Xft to work with transparent windows.

Diffstat:
cmd/wmii/client.c | 22+++++++++++-----------
cmd/wmii/event.c | 6+++---
cmd/wmii/ewmh.c | 12++++++------
cmd/wmii/frame.c | 2+-
cmd/wmii/fs.c | 10+++++-----
cmd/wmii/key.c | 20++++++++++----------
cmd/wmii/main.c | 4++--
cmd/wmii/root.c | 2+-
cmd/wmii/view.c | 12++++++------
cmd/wmii/x11.c | 105++++++++++++++++++++++++++++++++++++++++++-------------------------------------
cmd/wmii/xext.c | 2+-
include/x11.h | 4+++-
12 files changed, 105 insertions(+), 96 deletions(-)

diff --git a/cmd/wmii/client.c b/cmd/wmii/client.c @@ -105,7 +105,7 @@ client_create(XWindow w, XWindowAttributes *wa) { Pt(wa->width, wa->height)); c->w.type = WWindow; - c->w.w = w; + c->w.xid = w; c->w.r = c->r; depth = scr.depth; @@ -132,7 +132,7 @@ client_create(XWindow w, XWindowAttributes *wa) { fwa.background_pixmap = None; fwa.bit_gravity = NorthWestGravity; fwa.border_pixel = 0; - fwa.colormap = XCreateColormap(display, scr.root.w, vis, AllocNone); + fwa.colormap = XCreateColormap(display, scr.root.xid, vis, AllocNone); fwa.event_mask = SubstructureRedirectMask | SubstructureNotifyMask | StructureNotifyMask @@ -165,7 +165,7 @@ client_create(XWindow w, XWindowAttributes *wa) { group_init(c); - grab_button(c->framewin->w, AnyButton, AnyModifier); + grab_button(c->framewin->xid, AnyButton, AnyModifier); for(t=&client ;; t=&t[0]->next) if(!*t) { @@ -324,7 +324,7 @@ Client* win2client(XWindow w) { Client *c; for(c=client; c; c=c->next) - if(c->w.w == w) break; + if(c->w.xid == w) break; return c; } @@ -561,8 +561,8 @@ client_configure(Client *c) { r = rectsubpt(c->r, Pt(c->border, c->border)); e.type = ConfigureNotify; - e.event = c->w.w; - e.window = c->w.w; + e.event = c->w.xid; + e.window = c->w.xid; e.above = None; e.override_redirect = false; @@ -586,7 +586,7 @@ client_kill(Client *c, bool nice) { client_message(c, "WM_DELETE_WINDOW", 0); ewmh_pingclient(c); }else - XKillClient(display, c->w.w); + XKillClient(display, c->w.xid); } void @@ -662,14 +662,14 @@ client_seturgent(Client *c, int urgent, int from) { } if(from == UrgManager) { - wmh = XGetWMHints(display, c->w.w); + wmh = XGetWMHints(display, c->w.xid); if(wmh == nil) wmh = emallocz(sizeof *wmh); wmh->flags &= ~XUrgencyHint; if(urgent) wmh->flags |= XUrgencyHint; - XSetWMHints(display, c->w.w, wmh); + XSetWMHints(display, c->w.xid, wmh); XFree(wmh); } } @@ -778,7 +778,7 @@ client_prop(Client *c, Atom a) { ewmh_prop(c, a); break; case XA_WM_TRANSIENT_FOR: - XGetTransientForHint(display, c->w.w, &c->trans); + XGetTransientForHint(display, c->w.xid, &c->trans); break; case XA_WM_NORMAL_HINTS: memset(&h, 0, sizeof h); @@ -792,7 +792,7 @@ client_prop(Client *c, Atom a) { view_update(c->sel->view); break; case XA_WM_HINTS: - wmh = XGetWMHints(display, c->w.w); + wmh = XGetWMHints(display, c->w.xid); if(wmh) { c->noinput = (wmh->flags&InputFocus) && !wmh->input; client_seturgent(c, (wmh->flags & XUrgencyHint) != 0, UrgClient); diff --git a/cmd/wmii/event.c b/cmd/wmii/event.c @@ -25,7 +25,7 @@ findtime(Display *d, XEvent *e, XPointer v) { Window *w; w = (Window*)v; - if(e->type == PropertyNotify && e->xproperty.window == w->w) { + if(e->type == PropertyNotify && e->xproperty.window == w->xid) { xtime = e->xproperty.time; return true; } @@ -214,7 +214,7 @@ focusin(XFocusChangeEvent *ev) { if((ev->mode == NotifyWhileGrabbed) && (disp.hasgrab != &c_root)) return; - if(ev->window == screen->barwin->w) { + if(ev->window == screen->barwin->xid) { print_focus("focusin", nil, "<nil>"); disp.focus = nil; } @@ -318,7 +318,7 @@ unmapnotify(XUnmapEvent *ev) { Window *w; ignoreenter = ev->serial; - if((w = findwin(ev->window)) && (ev->event == w->parent->w)) { + if((w = findwin(ev->window)) && (ev->event == w->parent->xid)) { w->mapped = false; if(ev->send_event || w->unmapped-- == 0) handle(w, unmap, ev); diff --git a/cmd/wmii/ewmh.c b/cmd/wmii/ewmh.c @@ -29,7 +29,7 @@ ewmh_init(void) { Rect(0, 0, 1, 1), 0 /*depth*/, InputOnly, &wa, 0); - win = ewmhwin->w; + win = ewmhwin->xid; changeprop_long(&scr.root, Net("SUPPORTING_WM_CHECK"), "WINDOW", &win, 1); changeprop_long(ewmhwin, Net("SUPPORTING_WM_CHECK"), "WINDOW", &win, 1); changeprop_string(ewmhwin, Net("WM_NAME"), myname); @@ -80,7 +80,7 @@ ewmh_updateclientlist(void) { vector_linit(&vec); for(c=client; c; c=c->next) - vector_lpush(&vec, c->w.w); + vector_lpush(&vec, c->w.xid); changeprop_long(&scr.root, Net("CLIENT_LIST"), "WINDOW", vec.ary, vec.n); free(vec.ary); } @@ -99,14 +99,14 @@ ewmh_updatestacking(void) { foreach_column(v, s, a) for(f=a->frame; f; f=f->anext) if(f->client->sel == f) - vector_lpush(&vec, f->client->w.w); + vector_lpush(&vec, f->client->w.xid); } for(v=view; v; v=v->next) { for(f=v->floating->stack; f; f=f->snext) if(!f->snext) break; for(; f; f=f->sprev) if(f->client->sel == f) - vector_lpush(&vec, f->client->w.w); + vector_lpush(&vec, f->client->w.xid); } changeprop_long(&scr.root, Net("CLIENT_LIST_STACKING"), "WINDOW", vec.ary, vec.n); @@ -162,7 +162,7 @@ ewmh_pingclient(Client *c) { if(e->ping) return; - client_message(c, Net("WM_PING"), c->w.w); + client_message(c, Net("WM_PING"), c->w.xid); e->ping = xtime++; e->timer = ixp_settimer(&srv, PingTime, pingtimeout, c); } @@ -393,7 +393,7 @@ ewmh_clientmessage(XClientMessageEvent *e) { return 0; Dprint(DEwmh, "\t%A\n", l[0]); if(l[0] == NET("WM_PING")) { - if(e->window != scr.root.w) + if(e->window != scr.root.xid) return -1; c = win2client(l[2]); if(c == nil) diff --git a/cmd/wmii/frame.c b/cmd/wmii/frame.c @@ -528,7 +528,7 @@ frame_draw(Frame *f) { * What's more, the designers of X11 felt that it would be unfair to * implementers to make it possible to detect, or forbid, such changes. */ - XSetWindowBackgroundPixmap(display, c->framewin->w, None); + XSetWindowBackgroundPixmap(display, c->framewin->xid, None); copyimage(c->framewin, fr, img, ZP); } diff --git a/cmd/wmii/fs.c b/cmd/wmii/fs.c @@ -249,8 +249,8 @@ lookup_file(IxpFileId *parent, char *name) push_file("sel"); file->volatil = true; file->p.client = c; - file->id = c->w.w; - file->index = c->w.w; + file->id = c->w.xid; + file->index = c->w.xid; } if(name) goto LastItem; @@ -262,12 +262,12 @@ lookup_file(IxpFileId *parent, char *name) goto NextItem; } for(c=client; c; c=c->next) { - if(!name || c->w.w == id) { + if(!name || c->w.xid == id) { push_file(sxprint("%C", c)); file->volatil = true; file->p.client = c; - file->id = c->w.w; - file->index = c->w.w; + file->id = c->w.xid; + file->index = c->w.xid; assert(file->tab.name); if(name) goto LastItem; diff --git a/cmd/wmii/key.c b/cmd/wmii/key.c @@ -48,21 +48,21 @@ _grab(XWindow w, int keycode, uint mod) { static void grabkey(Key *k) { - _grab(scr.root.w, k->key, k->mod); - _grab(scr.root.w, k->key, k->mod | LockMask); + _grab(scr.root.xid, k->key, k->mod); + _grab(scr.root.xid, k->key, k->mod | LockMask); if(numlock_mask) { - _grab(scr.root.w, k->key, k->mod | numlock_mask); - _grab(scr.root.w, k->key, k->mod | numlock_mask | LockMask); + _grab(scr.root.xid, k->key, k->mod | numlock_mask); + _grab(scr.root.xid, k->key, k->mod | numlock_mask | LockMask); } } static void ungrabkey(Key *k) { - XUngrabKey(display, k->key, k->mod, scr.root.w); - XUngrabKey(display, k->key, k->mod | LockMask, scr.root.w); + XUngrabKey(display, k->key, k->mod, scr.root.xid); + XUngrabKey(display, k->key, k->mod | LockMask, scr.root.xid); if(numlock_mask) { - XUngrabKey(display, k->key, k->mod | numlock_mask, scr.root.w); - XUngrabKey(display, k->key, k->mod | numlock_mask | LockMask, scr.root.w); + XUngrabKey(display, k->key, k->mod | numlock_mask, scr.root.xid); + XUngrabKey(display, k->key, k->mod | numlock_mask | LockMask, scr.root.xid); } } @@ -140,11 +140,11 @@ fake_keypress(ulong mod, KeyCode key) { Client *c; c = disp.focus; - if(c == nil || c->w.w == 0) + if(c == nil || c->w.xid == 0) return; e.time = CurrentTime; - e.window = c->w.w; + e.window = c->w.xid; e.display = display; e.state = mod; e.keycode = key; diff --git a/cmd/wmii/main.c b/cmd/wmii/main.c @@ -45,7 +45,7 @@ scan_wins(void) { XWindowAttributes wa; XWindow d1, d2; - if(XQueryTree(display, scr.root.w, &d1, &d2, &wins, &num)) { + if(XQueryTree(display, scr.root.xid, &d1, &d2, &wins, &num)) { for(i = 0; i < num; i++) { if(!XGetWindowAttributes(display, wins[i], &wa)) continue; @@ -124,7 +124,7 @@ init_cursors(void) { XAllocNamedColor(display, scr.colormap, "black", &black, &dummy); pix = XCreateBitmapFromData( - display, scr.root.w, + display, scr.root.xid, zchar, 1, 1); cursor[CurNone] = XCreatePixmapCursor(display, diff --git a/cmd/wmii/root.c b/cmd/wmii/root.c @@ -75,7 +75,7 @@ static void kdown_event(Window *w, XKeyEvent *e) { e->state &= valid_mask; - kpress(w->w, e->state, (KeyCode)e->keycode); + kpress(w->xid, e->state, (KeyCode)e->keycode); } static Handlers handlers = { diff --git a/cmd/wmii/view.c b/cmd/wmii/view.c @@ -437,25 +437,25 @@ view_restack(View *v) { /* *sigh */ for(f=v->floating->stack; f; f=f->snext) if(f->client->w.ewmh.type & TypeDock) - vector_lpush(&wins, f->client->framewin->w); + vector_lpush(&wins, f->client->framewin->xid); else break; for(; f; f=f->snext) - vector_lpush(&wins, f->client->framewin->w); + vector_lpush(&wins, f->client->framewin->xid); for(int s=0; s < nscreens; s++) - vector_lpush(&wins, screens[s]->barwin->w); + vector_lpush(&wins, screens[s]->barwin->xid); for(d = divs; d && d->w->mapped; d = d->next) - vector_lpush(&wins, d->w->w); + vector_lpush(&wins, d->w->xid); foreach_column(v, s, a) if(a->frame) { - vector_lpush(&wins, a->sel->client->framewin->w); + vector_lpush(&wins, a->sel->client->framewin->xid); for(f=a->frame; f; f=f->anext) if(f != a->sel) - vector_lpush(&wins, f->client->framewin->w); + vector_lpush(&wins, f->client->framewin->xid); } ewmh_updatestacking(); diff --git a/cmd/wmii/x11.c b/cmd/wmii/x11.c @@ -15,7 +15,7 @@ const Point ZP = {0, 0}; const Rectangle ZR = {{0, 0}, {0, 0}}; -const Window _pointerwin = { .w = PointerRoot }; +const Window _pointerwin = { .xid = PointerRoot }; Window* const pointerwin = (Window*)&_pointerwin; static Map windowmap; @@ -153,7 +153,7 @@ Wfmt(Fmt *f) { Window *w; w = va_arg(f->args, Window*); - return fmtprint(f, "0x%ulx", w->w); + return fmtprint(f, "0x%ulx", w->xid); } /* Init */ @@ -171,7 +171,7 @@ initdisplay(void) { scr.white = WhitePixel(display, scr.screen); scr.black = BlackPixel(display, scr.screen); - scr.root.w = RootWindow(display, scr.screen); + scr.root.xid = RootWindow(display, scr.screen); scr.root.r = Rect(0, 0, DisplayWidth(display, scr.screen), DisplayHeight(display, scr.screen)); @@ -237,8 +237,12 @@ allocimage(int w, int h, int depth) { img = emallocz(sizeof *img); img->type = WImage; - img->w = XCreatePixmap(display, scr.root.w, w, h, depth); - img->gc = XCreateGC(display, img->w, 0, nil); + img->xid = XCreatePixmap(display, scr.root.xid, w, h, depth); + img->gc = XCreateGC(display, img->xid, 0, nil); + img->colormap = scr.colormap; + img->visual = scr.visual; + if(depth == 32) + img->visual = render_visual; img->depth = depth; img->r = Rect(0, 0, w, h); return img; @@ -253,7 +257,7 @@ freeimage(Image *img) { if(img->xft) XftDrawDestroy(img->xft); - XFreePixmap(display, img->w); + XFreePixmap(display, img->xid); XFreeGC(display, img->gc); free(img); } @@ -261,7 +265,7 @@ freeimage(Image *img) { static XftDraw* xftdrawable(Image *img) { if(img->xft == nil) - img->xft = XftDrawCreate(display, img->w, scr.visual, scr.colormap); + img->xft = XftDrawCreate(display, img->xid, img->visual, img->colormap); return img->xft; } @@ -275,17 +279,20 @@ createwindow_visual(Window *parent, Rectangle r, assert(parent->type == WWindow); w = emallocz(sizeof *w); + w->visual = vis; w->type = WWindow; w->parent = parent; + if(valmask & CWColormap) + w->colormap = wa->colormap; - w->w = XCreateWindow(display, parent->w, r.min.x, r.min.y, Dx(r), Dy(r), + w->xid = XCreateWindow(display, parent->xid, r.min.x, r.min.y, Dx(r), Dy(r), 0 /* border */, depth, class, vis, valmask, wa); #if 0 print("createwindow_visual(%W, %R, %d, %p, %ud, %p, %x) = %W\n", parent, r, depth, vis, class, wa, valmask, w); #endif if(class != InputOnly) - w->gc = XCreateGC(display, w->w, 0, nil); + w->gc = XCreateGC(display, w->xid, 0, nil); w->r = r; w->depth = depth; @@ -303,14 +310,14 @@ window(XWindow xw) { w = malloc(sizeof *w); w->type = WWindow; - w->w = xw; + w->xid = xw; return freelater(w); } void reparentwindow(Window *w, Window *par, Point p) { assert(w->type == WWindow); - XReparentWindow(display, w->w, par->w, p.x, p.y); + XReparentWindow(display, w->xid, par->xid, p.x, p.y); w->parent = par; w->r = rectsubpt(w->r, w->r.min); w->r = rectaddpt(w->r, p); @@ -324,19 +331,19 @@ destroywindow(Window *w) { XftDrawDestroy(w->xft); if(w->gc) XFreeGC(display, w->gc); - XDestroyWindow(display, w->w); + XDestroyWindow(display, w->xid); free(w); } void setwinattr(Window *w, WinAttr *wa, int valmask) { assert(w->type == WWindow); - XChangeWindowAttributes(display, w->w, valmask, wa); + XChangeWindowAttributes(display, w->xid, valmask, wa); } void selectinput(Window *w, long mask) { - XSelectInput(display, w->w, mask); + XSelectInput(display, w->xid, mask); } static void @@ -351,7 +358,7 @@ configwin(Window *w, Rectangle r, int border) { wc.width = Dx(r); wc.height = Dy(r); wc.border_width = border; - XConfigureWindow(display, w->w, CWX|CWY|CWWidth|CWHeight|CWBorderWidth, &wc); + XConfigureWindow(display, w->xid, CWX|CWY|CWWidth|CWHeight|CWBorderWidth, &wc); w->r = r; w->border = border; @@ -362,7 +369,7 @@ setborder(Window *w, int width, long pixel) { assert(w->type == WWindow); if(width) - XSetWindowBorder(display, w->w, pixel); + XSetWindowBorder(display, w->xid, pixel); if(width != w->border) configwin(w, w->r, width); } @@ -388,7 +395,7 @@ int mapwin(Window *w) { assert(w->type == WWindow); if(!w->mapped) { - XMapWindow(display, w->w); + XMapWindow(display, w->xid); w->mapped = 1; return 1; } @@ -399,7 +406,7 @@ int unmapwin(Window *w) { assert(w->type == WWindow); if(w->mapped) { - XUnmapWindow(display, w->w); + XUnmapWindow(display, w->xid); w->mapped = 0; w->unmapped++; return 1; @@ -410,13 +417,13 @@ unmapwin(Window *w) { void raisewin(Window *w) { assert(w->type == WWindow); - XRaiseWindow(display, w->w); + XRaiseWindow(display, w->xid); } void lowerwin(Window *w) { assert(w->type == WWindow); - XLowerWindow(display, w->w); + XLowerWindow(display, w->xid); } Handlers* @@ -428,9 +435,9 @@ sethandler(Window *w, Handlers *new) { assert((w->prev != nil && w->next != nil) || w->next == w->prev); if(new == nil) - map_rm(&windowmap, (ulong)w->w); + map_rm(&windowmap, (ulong)w->xid); else { - e = map_get(&windowmap, (ulong)w->w, true); + e = map_get(&windowmap, (ulong)w->xid, true); *e = w; } old = w->handler; @@ -452,8 +459,8 @@ findwin(XWindow w) { void setshapemask(Window *dst, Image *src, Point pt) { /* Assumes that we have the shape extension... */ - XShapeCombineMask (display, dst->w, - ShapeBounding, pt.x, pt.y, src->w, ShapeSet); + XShapeCombineMask (display, dst->xid, + ShapeBounding, pt.x, pt.y, src->xid, ShapeSet); } static void @@ -473,14 +480,14 @@ border(Image *dst, Rectangle r, int w, ulong col) { XSetLineAttributes(display, dst->gc, w, LineSolid, CapButt, JoinMiter); setgccol(dst, col); - XDrawRectangle(display, dst->w, dst->gc, + XDrawRectangle(display, dst->xid, dst->gc, r.min.x, r.min.y, Dx(r), Dy(r)); } void fill(Image *dst, Rectangle r, ulong col) { setgccol(dst, col); - XFillRectangle(display, dst->w, dst->gc, + XFillRectangle(display, dst->xid, dst->gc, r.min.x, r.min.y, Dx(r), Dy(r)); } @@ -504,7 +511,7 @@ drawpoly(Image *dst, Point *pt, int np, int cap, int w, ulong col) { xp = convpts(pt, np); XSetLineAttributes(display, dst->gc, w, LineSolid, cap, JoinMiter); setgccol(dst, col); - XDrawLines(display, dst->w, dst->gc, xp, np, CoordModeOrigin); + XDrawLines(display, dst->xid, dst->gc, xp, np, CoordModeOrigin); free(xp); } @@ -514,7 +521,7 @@ fillpoly(Image *dst, Point *pt, int np, ulong col) { xp = convpts(pt, np); setgccol(dst, col); - XFillPolygon(display, dst->w, dst->gc, xp, np, Complex, CoordModeOrigin); + XFillPolygon(display, dst->xid, dst->gc, xp, np, Complex, CoordModeOrigin); free(xp); } @@ -522,7 +529,7 @@ void drawline(Image *dst, Point p1, Point p2, int cap, int w, ulong col) { XSetLineAttributes(display, dst->gc, w, LineSolid, cap, JoinMiter); setgccol(dst, col); - XDrawLine(display, dst->w, dst->gc, p1.x, p1.y, p2.x, p2.y); + XDrawLine(display, dst->xid, dst->gc, p1.x, p1.y, p2.x, p2.y); } uint @@ -576,7 +583,7 @@ drawstring(Image *dst, Font *font, setgccol(dst, col); switch(font->type) { case FFontSet: - Xutf8DrawString(display, dst->w, + Xutf8DrawString(display, dst->xid, font->font.set, dst->gc, x, y, buf, len); @@ -588,7 +595,7 @@ drawstring(Image *dst, Font *font, break; case FX11: XSetFont(display, dst->gc, font->font.x11->fid); - XDrawString(display, dst->w, dst->gc, + XDrawString(display, dst->xid, dst->gc, x, y, buf, len); break; default: @@ -603,7 +610,7 @@ done: void copyimage(Image *dst, Rectangle r, Image *src, Point p) { XCopyArea(display, - src->w, dst->w, + src->xid, dst->xid, dst->gc, r.min.x, r.min.y, Dx(r), Dy(r), p.x, p.y); @@ -781,7 +788,7 @@ sendmessage(Window *w, char *name, long l0, long l1, long l2, long l3, long l4) XClientMessageEvent e; e.type = ClientMessage; - e.window = w->w; + e.window = w->xid; e.message_type = xatom(name); e.format = 32; e.data.l[0] = l0; @@ -794,7 +801,7 @@ sendmessage(Window *w, char *name, long l0, long l1, long l2, long l3, long l4) void sendevent(Window *w, bool propegate, long mask, XEvent *e) { - XSendEvent(display, w->w, propegate, mask, e); + XSendEvent(display, w->xid, propegate, mask, e); } KeyCode @@ -852,13 +859,13 @@ sync(void) { /* Properties */ void delproperty(Window *w, char *prop) { - XDeleteProperty(display, w->w, xatom(prop)); + XDeleteProperty(display, w->xid, xatom(prop)); } void changeproperty(Window *w, char *prop, char *type, int width, uchar data[], int n) { - XChangeProperty(display, w->w, xatom(prop), xatom(type), width, + XChangeProperty(display, w->xid, xatom(prop), xatom(type), width, PropModeReplace, data, n); } @@ -920,7 +927,7 @@ getprop(Window *w, char *prop, char *type, Atom *actual, int *format, typea = (type ? xatom(type) : 0L); - status = XGetWindowProperty(display, w->w, + status = XGetWindowProperty(display, w->xid, xatom(prop), offset, length, false /* delete */, typea, actual, format, &n, &extra, ret); @@ -997,7 +1004,7 @@ getprop_textlist(Window *w, char *name, char **ret[]) { *ret = nil; n = 0; - XGetTextProperty(display, w->w, &prop, xatom(name)); + XGetTextProperty(display, w->xid, &prop, xatom(name)); if(prop.nitems > 0) { if(Xutf8TextPropertyToTextList(display, &prop, &list, &n) == Success) *ret = list; @@ -1026,7 +1033,7 @@ getwinrect(Window *w) { XWindowAttributes wa; Point p; - if(!XGetWindowAttributes(display, w->w, &wa)) + if(!XGetWindowAttributes(display, w->xid, &wa)) return ZR; p = translate(w, &scr.root, ZP); return rectaddpt(Rect(0, 0, wa.width, wa.height), p); @@ -1034,7 +1041,7 @@ getwinrect(Window *w) { void setfocus(Window *w, int mode) { - XSetInputFocus(display, w->w, mode, CurrentTime); + XSetInputFocus(display, w->xid, mode, CurrentTime); } XWindow @@ -1053,7 +1060,7 @@ querypointer(Window *w) { uint ui; int i; - XQueryPointer(display, w->w, &win, &win, &i, &i, &pt.x, &pt.y, &ui); + XQueryPointer(display, w->xid, &win, &win, &i, &i, &pt.x, &pt.y, &ui); return pt; } @@ -1064,7 +1071,7 @@ pointerscreen(void) { uint ui; int i; - return XQueryPointer(display, scr.root.w, &win, &win, &i, &i, + return XQueryPointer(display, scr.root.xid, &win, &win, &i, &i, &pt.x, &pt.y, &ui); } @@ -1082,7 +1089,7 @@ warppointer(Point pt) { system(sxprint("DISPLAY=%s wiwarp %d %d", real, pt.x, pt.y)); XWarpPointer(display, - /* src, dest w */ None, scr.root.w, + /* src, dest w */ None, scr.root.xid, /* src_rect */ 0, 0, 0, 0, /* target */ pt.x, pt.y); } @@ -1092,7 +1099,7 @@ translate(Window *src, Window *dst, Point sp) { Point pt; XWindow w; - XTranslateCoordinates(display, src->w, dst->w, sp.x, sp.y, + XTranslateCoordinates(display, src->xid, dst->xid, sp.x, sp.y, &pt.x, &pt.y, &w); return pt; } @@ -1103,8 +1110,8 @@ grabpointer(Window *w, Window *confine, Cursor cur, int mask) { cw = None; if(confine) - cw = confine->w; - return XGrabPointer(display, w->w, false /* owner events */, mask, + cw = confine->xid; + return XGrabPointer(display, w->xid, false /* owner events */, mask, GrabModeAsync, GrabModeAsync, cw, cur, CurrentTime ) == GrabSuccess; } @@ -1117,7 +1124,7 @@ ungrabpointer(void) { int grabkeyboard(Window *w) { - return XGrabKeyboard(display, w->w, true /* owner events */, + return XGrabKeyboard(display, w->xid, true /* owner events */, GrabModeAsync, GrabModeAsync, CurrentTime ) == GrabSuccess; } @@ -1145,14 +1152,14 @@ sethints(Window *w) { h->max = Pt(INT_MAX, INT_MAX); h->inc = Pt(1,1); - wmh = XGetWMHints(display, w->w); + wmh = XGetWMHints(display, w->xid); if(wmh) { if(wmh->flags & WindowGroupHint) h->group = wmh->window_group; free(wmh); } - if(!XGetWMNormalHints(display, w->w, &xs, &size)) + if(!XGetWMNormalHints(display, w->xid, &xs, &size)) return; if(xs.flags & PMinSize) { diff --git a/cmd/wmii/xext.c b/cmd/wmii/xext.c @@ -55,7 +55,7 @@ randr_init(void) { if(XRRQueryVersion(display, &major, &minor) && major < 1) have_RandR = false; if(have_RandR) - XRRSelectInput(display, scr.root.w, RRScreenChangeNotifyMask); + XRRSelectInput(display, scr.root.xid, RRScreenChangeNotifyMask); } static bool diff --git a/include/x11.h b/include/x11.h @@ -133,8 +133,10 @@ struct WinHints { struct Window { int type; - XID w; + XID xid; GC gc; + Visual* visual; + Colormap colormap; XftDraw* xft; Rectangle r; int border;