renamed sendtoarea into sendto, fixed both bugs reported by bogon, added classinstance stuff to Client struct (also initialized in alloc_client())

This commit is contained in:
Anselm R. Garbe 2006-03-08 16:05:09 +01:00
parent 8baa06eb3b
commit a829af6746
9 changed files with 29 additions and 20 deletions

View File

@ -17,7 +17,7 @@ all:
@echo "LDFLAGS = ${LDFLAGS}"
@echo "CC = ${CC}"
@for i in ${SUBDIRS} cmd/wm; do \
(cd $$i; make) \
(cd $$i; make;) \
done
dist: clean

View File

@ -103,7 +103,7 @@ select_area(Area *a, char *arg)
}
void
send_toarea(Area *to, Area *from, Client *c)
send2area(Area *to, Area *from, Client *c)
{
detach_fromarea(from, c);
attach_toarea(to, c);
@ -392,7 +392,7 @@ drop_moving(Frame *f, XRectangle *new, XPoint * pt)
!blitz_ispointinrect(pt->x, pt->y, &t->area[i]->rect); i++);
if((tgt = ((i < t->narea) ? t->area[i] : nil))) {
if(tgt != src) {
send_toarea(tgt, src, f->client);
send2area(tgt, src, f->client);
arrange_area(tgt);
}
else {

View File

@ -16,6 +16,7 @@ alloc_client(Window w, XWindowAttributes *wa)
XTextProperty name;
Client *c = (Client *) cext_emallocz(sizeof(Client));
XSetWindowAttributes fwa;
XClassHint ch;
long msize;
static unsigned int id = 1;
@ -37,6 +38,10 @@ alloc_client(Window w, XWindowAttributes *wa)
cext_strlcpy(c->name, (char *)name.value, sizeof(c->name));
free(name.value);
}
if(XGetClassHint(dpy, c->win, &ch)) {
cext_strlcpy(c->class, ch.res_class, sizeof(c->class));
cext_strlcpy(c->instance, ch.res_name, sizeof(c->instance));
}
fwa.override_redirect = 1;
fwa.background_pixmap = ParentRelative;
@ -230,6 +235,9 @@ draw_client(Client *c)
Draw d = { 0 };
char buf[512];
if(!c->nframe)
return; /* might not have been attached atm */
d.align = WEST;
d.drawable = c->framewin;
d.font = xfont;
@ -467,7 +475,7 @@ select_client(Client *c, char *arg)
}
void
sendtoarea_client(Client *c, char *arg)
send2area_client(Client *c, char *arg)
{
const char *errstr;
Frame *f = c->frame[c->sel];
@ -501,7 +509,7 @@ sendtoarea_client(Client *c, char *arg)
return;
to = t->area[i];
}
send_toarea(to, a, c);
send2area(to, a, c);
}
void

View File

@ -181,6 +181,8 @@ handle_destroynotify(XEvent *e)
{
XDestroyWindowEvent *ev = &e->xdestroywindow;
Client *c = win2client(ev->window);
if(!c)
return;
if(c->frame)
detach_client(c, False);
destroy_client(c);
@ -194,7 +196,7 @@ handle_expose(XEvent *e)
if(ev->count == 0) {
if(ev->window == winbar)
draw_bar();
else if((c = win2clientframe(ev->window)) && c->nframe)
else if((c = win2clientframe(ev->window)))
draw_client(c);
}
}

View File

@ -1180,14 +1180,14 @@ xwrite(IXPConn *c, Fcall *fcall)
f = tag[i1]->area[i2]->frame[i3];
if(!strncmp(buf, "kill", 5))
kill_client(f->client);
else if(!strncmp(buf, "sendtoarea ", 11))
sendtoarea_client(f->client, &buf[11]);
else if(!strncmp(buf, "sendto ", 7))
send2area_client(f->client, &buf[7]);
break;
case FsDGclient:
if(!strncmp(buf, "kill", 5))
kill_client(client[i1]);
else if(!strncmp(buf, "sendtoarea ", 11))
sendtoarea_client(client[i1], &buf[11]);
else if(!strncmp(buf, "sendto ", 7))
send2area_client(client[i1], &buf[7]);
break;
default:
break;

View File

@ -116,6 +116,8 @@ struct Client {
unsigned short id;
char name[256];
char tags[256];
char class[128];
char instance[128];
int proto;
unsigned int border;
Bool destroyed;
@ -207,7 +209,7 @@ int area2index(Area *a);
int aid2index(Tag *t, unsigned short id);
void update_area_geometry(Area *a);
void select_area(Area *a, char *arg);
void send_toarea(Area *to, Area *from, Client *c);
void send2area(Area *to, Area *from, Client *c);
void attach_toarea(Area *a, Client *c);
void detach_fromarea(Area *a, Client *c);
void arrange_tag(Tag *t, Bool updategeometry);
@ -243,7 +245,7 @@ Client *sel_client_of_tag(Tag *t);
void focus_client(Client *c);
void resize_client(Client *c, XRectangle *r, XPoint *pt, Bool ignore_xcall);
void select_client(Client *c, char *arg);
void sendtoarea_client(Client *c, char *arg);
void send2area_client(Client *c, char *arg);
void resize_all_clients();
void focus(Client *c);
int cid2index(unsigned short id);

View File

@ -1,6 +1,7 @@
#!/bin/sh
# start wmiiwm and wait for its termination
test $# -eq 0 || exec wmiiwm "$@"
wmiiwm -c || exit 1
OLD_PATH=$PATH export OLD_PATH

View File

@ -1,8 +1,6 @@
.TH WMII 1 wmii-3
.SH NAME
wmii \- window manager improved 2
.SH SYNOPSIS
.B wmii
.SH DESCRIPTION
.SS Overview
.BR wmii (1)

View File

@ -71,7 +71,6 @@ $MODKEY-n
$MODKEY-m
$MODKEY-s
$MODKEY-equal
$MODKEY-0
$MODKEY-1
$MODKEY-2
$MODKEY-3
@ -81,7 +80,6 @@ $MODKEY-6
$MODKEY-7
$MODKEY-8
$MODKEY-9
$MODKEY-Shift-0
$MODKEY-Shift-1
$MODKEY-Shift-2
$MODKEY-Shift-3
@ -115,7 +113,7 @@ do
$MODKEY-Control-a)
`proglist CONFPREFIX/wmii-3:$HOME/.wmii-3 | wmiimenu` &;;
$MODKEY-Control-t)
xwrite /ctl select `wmiir read /tags | awk '{print $NF}' | wmiimenu`;;
xwrite /ctl select `wmiir read /tags | awk '{print $10}' | wmiimenu`;;
$MODKEY-t)
extern xterm &;;
$MODKEY-m)
@ -125,11 +123,11 @@ do
$MODKEY-equal)
xwrite /ws/sel/mode equal;;
$MODKEY-n)
xwrite /ws/sel/sel/ctl sendtoarea new;;
xwrite /ws/sel/sel/ctl sendto new;;
$MODKEY-Return)
xwrite /ws/sel/sel/ctl sendtoarea prev;;
xwrite /ws/sel/sel/ctl sendto prev;;
$MODKEY-Shift-Return)
xwrite /ws/sel/sel/ctl sendtoarea next;;
xwrite /ws/sel/sel/ctl sendto next;;
$MODKEY-h)
xwrite /ws/ctl select prev;;
$MODKEY-l)