commit 5e6ca4f2fcea8a7549138d27da651a5e885f4215
parent aa1c1698e2ab4ff1d58ae4233cef68d4fdca18e0
Author: Enno Boland (tox) <tox@s01.de>
Date: Tue, 22 Sep 2009 20:17:20 +0200
working on reparenting.
Diffstat:
M | tabbed.c | | | 34 | ++++++++++++++++++++-------------- |
1 file changed, 20 insertions(+), 14 deletions(-)
diff --git a/tabbed.c b/tabbed.c
@@ -80,6 +80,7 @@ static void buttonpress(XEvent *e);
static void cleanup(void);
static void clientmessage(XEvent *e);
static void configurenotify(XEvent *e);
+static void createnotify(XEvent *e);
static void destroynotify(XEvent *e);
static void die(const char *errstr, ...);
static void drawbar();
@@ -99,6 +100,7 @@ static void spawn(const Arg *arg);
static void manage(Window win);
static void maprequest(XEvent *e);
static void propertynotify(XEvent *e);
+static void reparentnotify(XEvent *e);
static void resize(Client *c, int w, int h);
static void rotate(const Arg *arg);
static void run(void);
@@ -122,6 +124,8 @@ static void (*handler[LASTEvent]) (XEvent *) = {
[KeyPress] = keypress,
[Expose] = expose,
[ClientMessage] = clientmessage,
+ [CreateNotify] = createnotify,
+ [ReparentNotify] = reparentnotify,
};
static Display *dpy;
static DC dc;
@@ -159,7 +163,6 @@ cleanup(void) {
XFreeFontSet(dpy, dc.font.set);
else
XFreeFont(dpy, dc.font.xfont);
- puts("aaa");
XFreePixmap(dpy, dc.drawable);
XFreeGC(dpy, dc.gc);
XDestroyWindow(dpy, win);
@@ -171,9 +174,7 @@ clientmessage(XEvent *e) {
XClientMessageEvent *ev = &e->xclient;
if(ev->message_type == xembedatom) {
- puts("message!");
- printf("%ld %ld", ev->data.l[0], ev->data.l[1]);
- puts("");
+ printf("%ld %ld %ld %ld %ld\n", ev->data.l[0], ev->data.l[1], ev->data.l[2], ev->data.l[3], ev->data.l[4]);
}
}
void
@@ -193,6 +194,14 @@ configurenotify(XEvent *e) {
}
void
+createnotify(XEvent *e) {
+ XCreateWindowEvent *ev = &e->xcreatewindow;
+
+ if(!getclient(ev->window))
+ manage(ev->window);
+}
+
+void
destroynotify(XEvent *e) {
Client *c;
XDestroyWindowEvent *ev = &e->xdestroywindow;
@@ -514,7 +523,7 @@ manage(Window w) {
Client *c;
XEvent e;
- XSelectInput(dpy, w, StructureNotifyMask | PropertyChangeMask);
+ XSelectInput(dpy, w, StructureNotifyMask|PropertyChangeMask);
XWithdrawWindow(dpy, w, 0);
XReparentWindow(dpy, w, win, 0, bh);
XSync(dpy, False);
@@ -551,13 +560,8 @@ manage(Window w) {
}
void maprequest(XEvent *e) {
- static XWindowAttributes wa;
XMapRequestEvent *ev = &e->xmaprequest;
- if(!XGetWindowAttributes(dpy, ev->window, &wa))
- return;
- if(wa.override_redirect)
- return;
if(!getclient(ev->window))
manage(ev->window);
}
@@ -573,6 +577,9 @@ propertynotify(XEvent *e) {
}
}
+void reparentnotify(XEvent *e) {
+}
+
void
resize(Client *c, int w, int h) {
XConfigureEvent ce;
@@ -654,7 +661,7 @@ setup(void) {
XSetFont(dpy, dc.gc, dc.font.xfont->fid);
win = XCreateSimpleWindow(dpy, root, wx, wy, ww, wh, 0, dc.norm[ColFG], dc.norm[ColBG]);
- XSelectInput(dpy, win, StructureNotifyMask|PointerMotionMask|
+ XSelectInput(dpy, win, PointerMotionMask|SubstructureNotifyMask|
ButtonPressMask|ExposureMask|KeyPressMask|
LeaveWindowMask|SubstructureRedirectMask);
XMapRaised(dpy, win);
@@ -735,7 +742,6 @@ int
xerror(Display *dpy, XErrorEvent *ee) {
if(ee->error_code == BadWindow) {
badwindow = True;
- puts("badwindow");
return 0;
}
fprintf(stderr, "tabbed: fatal error: request code=%d, error code=%d\n",
@@ -749,8 +755,8 @@ main(int argc, char *argv[]) {
int detach = 0;
if(argc == 2 && !strcmp("-v", argv[1]))
- die("tabbed-"VERSION", © 2006-2008 surf engineers, see LICENSE for details\n");
- else if(argc == 2 && strcmp("-d", argv[1]))
+ die("tabbed-"VERSION", © 2006-2008 tabbed engineers, see LICENSE for details\n");
+ else if(argc == 2 && strcmp("-d", argv[1]) == 0)
detach = 1;
else if(argc != 1)
die("usage: tabbed [-d] [-v]\n");