tabbed

tab interface for application supporting Xembed
git clone git://git.suckless.org/tabbed
Log | Files | Refs | README | LICENSE

commit f2aba1fe0e666f3ad777356cecc1dea04236d15c
parent e3b3233230ef694b260503879fd747eca5c266af
Author: Enno Boland (tox) <tox@s01.de>
Date:   Wed, 28 Oct 2009 11:40:02 +0100

works better now with windowmanager who use mapping/unmapping
Diffstat:
Mtabbed.c | 22+++++++++++-----------
1 file changed, 11 insertions(+), 11 deletions(-)

diff --git a/tabbed.c b/tabbed.c @@ -83,6 +83,7 @@ typedef struct Client { struct Client *next; Window win; int tabx; + Bool mapped; } Client; /* function declarations */ @@ -121,7 +122,6 @@ static void sigchld(int unused); static void spawn(const Arg *arg); static int textnw(const char *text, unsigned int len); static void unmanage(Client *c); -static void unmapnotify(const XEvent *e); static void updatenumlockmask(void); static void updatetitle(Client *c); static int xerror(Display *dpy, XErrorEvent *ee); @@ -140,7 +140,6 @@ static void (*handler[LASTEvent]) (const XEvent *) = { [FocusIn] = focusin, [KeyPress] = keypress, [PropertyNotify] = propertynotify, - [UnmapNotify] = unmapnotify, }; static int bh, wx, wy, ww, wh; static unsigned int numlockmask = 0; @@ -765,15 +764,6 @@ unmanage(Client *c) { } void -unmapnotify(const XEvent *e) { - const XUnmapEvent *ev = &e->xunmap; - Client *c; - - if((c = getclient(ev->window))) - unmanage(c); -} - -void updatenumlockmask(void) { unsigned int i, j; XModifierKeymap *modmap; @@ -801,6 +791,16 @@ updatetitle(Client *c) { * default error handler, which may call exit. */ int xerror(Display *dpy, XErrorEvent *ee) { + if(ee->error_code == BadWindow + || (ee->request_code == X_SetInputFocus && ee->error_code == BadMatch) + || (ee->request_code == X_PolyText8 && ee->error_code == BadDrawable) + || (ee->request_code == X_PolyFillRectangle && ee->error_code == BadDrawable) + || (ee->request_code == X_PolySegment && ee->error_code == BadDrawable) + || (ee->request_code == X_ConfigureWindow && ee->error_code == BadMatch) + || (ee->request_code == X_GrabButton && ee->error_code == BadAccess) + || (ee->request_code == X_GrabKey && ee->error_code == BadAccess) + || (ee->request_code == X_CopyArea && ee->error_code == BadDrawable)) + return 0; fprintf(stderr, "tabbed: fatal error: request code=%d, error code=%d\n", ee->request_code, ee->error_code); return xerrorxlib(dpy, ee); /* may call exit */