wmii

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

commit 33ffed72931e6df2fe55b9e39e19695bc7509ec8
parent 75ecccb900b804db1d54ce9763be9435885877f3
Author: Anselm R. Garbe <garbeam@wmii.de>
Date:   Wed, 22 Feb 2006 10:58:00 +0100

removed detach layer as proposed in IRC yesterday, we will have some sendto soon


Diffstat:
cmd/wm/client.c | 13+------------
cmd/wm/fs.c | 4----
cmd/wm/wm.c | 109++-----------------------------------------------------------------------------
cmd/wm/wm.h | 5-----
rc/wmiirc | 6------
5 files changed, 3 insertions(+), 134 deletions(-)

diff --git a/cmd/wm/client.c b/cmd/wm/client.c @@ -248,13 +248,6 @@ handle_client_property(Client *c, XPropertyEvent *e) void destroy_client(Client * c) { - size_t i; - for(i = 0; i < ndet; i++) - if(det[i] == c) { - cext_array_detach((void **)det, c, &detsz); - ndet--; - break; - } XFreeGC(dpy, c->frame.gc); XDestroyWindow(dpy, c->frame.win); cext_array_detach((void **)client, c, &clientsz); @@ -410,12 +403,8 @@ detach_client(Client *c, Bool unmap) if(a->sel >= a->nclient) a->sel = 0; if(!c->destroyed) { - if(!unmap) { - det = (Client **)cext_array_attach((void **)det, c, - sizeof(Client *), &detsz); - ndet++; + if(!unmap) unmap_client(c); - } c->rect.x = c->frame.rect.x; c->rect.y = c->frame.rect.y; reparent_client(c, root, c->rect.x, c->rect.y); diff --git a/cmd/wm/fs.c b/cmd/wm/fs.c @@ -1050,10 +1050,6 @@ xwrite(IXPConn *c, Fcall *fcall) srv.running = 0; else if(!strncmp(buf, "pager", 6)) pager(); - else if(!strncmp(buf, "detached", 9)) - detached_clients(); - else if(!strncmp(buf, "attach", 7)) - attach_detached_client(); else if(!strncmp(buf, "select", 6)) select_page(&buf[7]); else if(!strncmp(buf, "warp ", 5)) { diff --git a/cmd/wm/wm.c b/cmd/wm/wm.c @@ -224,111 +224,6 @@ pager() } } -static void -map_detached_clients() -{ - unsigned int i, ic, ir, tw, th, rows, cols; - int dx, dy; - XRectangle cr; - - blitz_getbasegeometry(ndet, &cols, &rows); - if(!cols) - cols = 1; - if(!rows) - rows = 1; - dx = (cols - 1) * DEF_PAGER_GAP; /* DEF_PAGER_GAPpx space */ - dy = (rows - 1) * DEF_PAGER_GAP; /* DEF_PAGER_GAPpx space */ - tw = (rect.width - dx) / cols; - th = (rect.height - dy) / rows; - - i = 0; - for(ir = 0; ir < rows; ir++) { - for(ic = 0; ic < cols; ic++) { - if(i >= ndet) - return; - cr.x = ic * tw + (ic * DEF_PAGER_GAP); - cr.y = ir * th + (ir * DEF_PAGER_GAP); - cr.width = tw; - cr.height = th; - XMoveResizeWindow(dpy, det[i]->win, cr.x, cr.y, cr.width, cr.height); - configure_client(det[i]); - map_client(det[i]); - grab_mouse(det[i]->win, AnyModifier, Button1); - XSync(dpy, False); - i++; - } - } -} - -void -detached_clients() -{ - XEvent ev; - int n; - size_t i; - Client *c; - - if(!ndet) - return; - XClearWindow(dpy, transient); - XMapRaised(dpy, transient); - map_detached_clients(); - while(XGrabKeyboard - (dpy, transient, True, GrabModeAsync, GrabModeAsync, - CurrentTime) != GrabSuccess) - usleep(20000); - - for(;;) { - while(!XCheckMaskEvent(dpy, ButtonPressMask | KeyPressMask, &ev)) { - usleep(20000); - continue; - } - switch (ev.type) { - case KeyPress: - XUnmapWindow(dpy, transient); - for(i = 0; i < ndet; i++) - unmap_client(det[i]); - if((n = handle_kpress(&ev.xkey)) != -1) { - if(n < ndet) { - c = det[n]; - cext_array_detach((void **)det, c, &detsz); - ndet--; - attach_client(c); - } - } - XUngrabKeyboard(dpy, CurrentTime); - XSync(dpy, False); - return; - break; - case ButtonPress: - XUnmapWindow(dpy, transient); - for(i = 0; i < ndet; i++) - unmap_client(det[i]); - if((ev.xbutton.button == Button1) - && (c = win_to_client(ev.xbutton.window))) { - cext_array_detach((void **)det, c, &detsz); - ndet--; - attach_client(c); - } - XUngrabKeyboard(dpy, CurrentTime); - XSync(dpy, False); - return; - break; - } - } -} - -void -attach_detached_client() -{ - Client *c = ndet ? det[0] : nil; - if(c) { - cext_array_detach((void **)det, c, &detsz); - ndet--; - attach_client(c); - } -} - Client * win_to_client(Window w) { @@ -627,9 +522,9 @@ main(int argc, char *argv[]) ixp_server_open_conn(&srv, ConnectionNumber(dpy), check_x_event, nil); init_x_event_handler(); - ndet = npage = nclient = detsz = pagesz = clientsz = sel = 0; + npage = nclient = pagesz = clientsz = sel = 0; page = nil; - client = det = nil; + client = nil; key = nil; keysz = nkey = 0; diff --git a/cmd/wm/wm.h b/cmd/wm/wm.h @@ -136,9 +136,6 @@ Page **page; size_t npage; size_t pagesz; size_t sel; -Client **det; -size_t ndet; -size_t detsz; Client **client; size_t nclient; size_t clientsz; @@ -284,6 +281,4 @@ int win_proto(Window w); int win_state(Window w); /*void handle_after_write(IXPServer * s, File * f);*/ void pager(); -void detached_clients(); -void attach_detached_client(); diff --git a/rc/wmiirc b/rc/wmiirc @@ -129,12 +129,6 @@ while(event=`{read}) { } & case $MODKEY-t extern xterm -rv & - case $MODKEY-d - xwrite /sel/sel/sel/ctl detach - case $MODKEY-a - xwrite /ctl attach - case $MODKEY-Shift-a - xwrite /ctl detached case $MODKEY-n wmiir read /sel/new >/dev/null >[2=1] case $MODKEY-m