Introduction
Introduction Statistics Contact Development Disclaimer Help
tadded an creatnotify event handler - dwm - [fork] customized build of dwm, the…
git clone git://src.adamsgaard.dk/dwm
Log
Files
Refs
README
LICENSE
---
commit 83aa110c6fabbf5f5a14b698a6ca22072cb80629
parent 5a1a2edf0e584e660e16d2e01094851e0f9161e2
Author: Anselm R. Garbe <[email protected]>
Date: Mon, 4 Jun 2007 11:50:48 +0200
added an creatnotify event handler
Diffstat:
M client.c | 62 +++++++++++++++++++----------…
M dwm.h | 4 +++-
M event.c | 14 ++++++++++++++
M layout.c | 16 ----------------
4 files changed, 56 insertions(+), 40 deletions(-)
---
diff --git a/client.c b/client.c
t@@ -97,6 +97,14 @@ attach(Client *c) {
}
void
+ban(Client *c) {
+ if (c->isbanned)
+ return;
+ XMoveWindow(dpy, c->win, c->x + 2 * sw, c->y);
+ c->isbanned = True;
+}
+
+void
configure(Client *c) {
XConfigureEvent ce;
t@@ -299,6 +307,37 @@ togglefloating(const char *arg) {
}
void
+unban(Client *c) {
+ if (!c->isbanned)
+ return;
+ XMoveWindow(dpy, c->win, c->x, c->y);
+ c->isbanned = False;
+}
+
+void
+unmanage(Client *c) {
+ XWindowChanges wc;
+
+ wc.border_width = c->oldborder;
+ /* The server grab construct avoids race conditions. */
+ XGrabServer(dpy);
+ XSetErrorHandler(xerrordummy);
+ XConfigureWindow(dpy, c->win, CWBorderWidth, &wc); /* restore border */
+ detach(c);
+ detachstack(c);
+ if(sel == c)
+ focus(NULL);
+ XUngrabButton(dpy, AnyButton, AnyModifier, c->win);
+ setclientstate(c, WithdrawnState);
+ free(c->tags);
+ free(c);
+ XSync(dpy, False);
+ XSetErrorHandler(xerror);
+ XUngrabServer(dpy);
+ lt->arrange();
+}
+
+void
updatesizehints(Client *c) {
long msize;
XSizeHints size;
t@@ -376,26 +415,3 @@ updatetitle(Client *c) {
c->name[sizeof c->name - 1] = '\0';
XFree(name.value);
}
-
-void
-unmanage(Client *c) {
- XWindowChanges wc;
-
- wc.border_width = c->oldborder;
- /* The server grab construct avoids race conditions. */
- XGrabServer(dpy);
- XSetErrorHandler(xerrordummy);
- XConfigureWindow(dpy, c->win, CWBorderWidth, &wc); /* restore border */
- detach(c);
- detachstack(c);
- if(sel == c)
- focus(NULL);
- XUngrabButton(dpy, AnyButton, AnyModifier, c->win);
- setclientstate(c, WithdrawnState);
- free(c->tags);
- free(c);
- XSync(dpy, False);
- XSetErrorHandler(xerror);
- XUngrabServer(dpy);
- lt->arrange();
-}
diff --git a/dwm.h b/dwm.h
t@@ -96,6 +96,7 @@ extern Window root, barwin;
/* client.c */
void attach(Client *c); /* attaches c to global client …
+void ban(Client *c); /* bans c */
void configure(Client *c); /* send synthetic configure event */
void detach(Client *c); /* detaches c from global clien…
void focus(Client *c); /* focus c if visible && !NULL, …
t@@ -104,9 +105,10 @@ void manage(Window w, XWindowAttributes *wa); /* m…
void resize(Client *c, int x, int y,
int w, int h, Bool sizehints); /* resize with given coo…
void togglefloating(const char *arg); /* toggles sel between floating/t…
+void unban(Client *c); /* unbans c */
+void unmanage(Client *c); /* destroy c */
void updatesizehints(Client *c); /* update the size hint variables of c…
void updatetitle(Client *c); /* update the name of c */
-void unmanage(Client *c); /* destroy c */
/* draw.c */
void drawstatus(void); /* draw the bar */
diff --git a/event.c b/event.c
t@@ -225,6 +225,19 @@ configurenotify(XEvent *e) {
}
static void
+createnotify(XEvent *e) {
+ static XWindowAttributes wa;
+ XCreateWindowEvent *ev = &e->xcreatewindow;
+
+ if(!XGetWindowAttributes(dpy, ev->window, &wa))
+ return;
+ if(wa.override_redirect)
+ return;
+ if(!getclient(ev->window) && (wa.map_state == IsViewable))
+ manage(ev->window, &wa);
+}
+
+static void
destroynotify(XEvent *e) {
Client *c;
XDestroyWindowEvent *ev = &e->xdestroywindow;
t@@ -350,6 +363,7 @@ void (*handler[LASTEvent]) (XEvent *) = {
[ButtonPress] = buttonpress,
[ConfigureRequest] = configurerequest,
[ConfigureNotify] = configurenotify,
+ [CreateNotify] = createnotify,
[DestroyNotify] = destroynotify,
[EnterNotify] = enternotify,
[LeaveNotify] = leavenotify,
diff --git a/layout.c b/layout.c
t@@ -12,22 +12,6 @@ static unsigned int masterw = MASTERWIDTH;
static unsigned int nmaster = NMASTER;
static void
-ban(Client *c) {
- if (c->isbanned)
- return;
- XMoveWindow(dpy, c->win, c->x + 2 * sw, c->y);
- c->isbanned = True;
-}
-
-static void
-unban(Client *c) {
- if (!c->isbanned)
- return;
- XMoveWindow(dpy, c->win, c->x, c->y);
- c->isbanned = False;
-}
-
-static void
tile(void) {
unsigned int i, n, nx, ny, nw, nh, mw, mh, tw, th;
Client *c;
You are viewing proxied material from mx1.adamsgaard.dk. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.