commit ad9d50b3a8f90b4fae34ca8a4f40667b0c7b7d9f
parent 23a10f4541a8cc820f2fad636b8415cd40857cea
Author: Kris Maglione <bsdaemon@wmii.de>
Date: Wed, 28 Jun 2006 02:20:17 -0400
Restore frame_of_win; remove wmiiwm's -c option
Diffstat:
4 files changed, 43 insertions(+), 42 deletions(-)
diff --git a/cmd/wm/client.c b/cmd/wm/client.c
@@ -37,6 +37,14 @@ client_of_win(Window w)
return c;
}
+Frame *
+frame_of_win(Window w)
+{
+ Client *c;
+ for(c=client; c && c->framewin != w; c=c->next);
+ return c ? c->frame : nil;
+}
+
static void
update_client_name(Client *c)
{
@@ -735,8 +743,8 @@ compare_tags(const void *a, const void *b) {
void
apply_tags(Client *c, const char *tags)
{
- unsigned int i, j = 0, n;
- int len = sizeof(c->tags);
+ unsigned int i, j, n;
+ int len;
char buf[256];
char *toks[32];
@@ -744,7 +752,7 @@ apply_tags(Client *c, const char *tags)
if(!(n = cext_tokenize(toks, 31, buf, '+')))
return;
- for(i = 0; i < n; i++) {
+ for(i=0, j=0; i < n; i++) {
if(!strncmp(toks[i], "~", 2))
c->floating = True;
else if(!strncmp(toks[i], "!", 2))
@@ -756,6 +764,7 @@ apply_tags(Client *c, const char *tags)
c->tags[0] = '\0';
qsort(toks, j, sizeof(char *), compare_tags);
+ len = sizeof(c->tags);
if(!j) toks[j++] = "nil";
for(i=0, n=0; i < j && len > 1; i++)
if(!n || strcmp(toks[i], toks[n-1])) {
diff --git a/cmd/wm/event.c b/cmd/wm/event.c
@@ -66,7 +66,7 @@ static Bool drag = False;
static void
handle_buttonrelease(XEvent *e)
{
- Client *c;
+ Frame *f;
Bar *b;
XButtonPressedEvent *ev = &e->xbutton;
if(ev->window == barwin) {
@@ -79,12 +79,12 @@ handle_buttonrelease(XEvent *e)
return write_event("RightBarClick %d %s\n",
ev->button, b->name);
}
- else if((c = client_of_win(ev->window)) && c->frame) {
- if(ispointinrect(ev->x, ev->y, &c->sel->tagbar.rect)) {
- c->sel->tagbar.curend = blitz_charof(&c->sel->tagbar, ev->x, ev->y);
- draw_frame(c->sel);
+ else if((f = frame_of_win(ev->window))) {
+ if(ispointinrect(ev->x, ev->y, &f->tagbar.rect)) {
+ f->tagbar.curend = blitz_charof(&f->tagbar, ev->x, ev->y);
+ draw_frame(f);
}
- write_event("ClientClick %d %d\n", idx_of_client(c), ev->button);
+ write_event("ClientClick %d %d\n", idx_of_client(f->client), ev->button);
drag = False;
}
}
@@ -92,21 +92,21 @@ handle_buttonrelease(XEvent *e)
static void
handle_motionnotify(XEvent *e)
{
- Client *c;
+ Frame *f;
XMotionEvent *ev = &e->xmotion;
if(!drag)
return;
- if((c = client_of_win(ev->window))) {
- if(ispointinrect(ev->x, ev->y, &c->sel->tagbar.rect)) {
- c->sel->tagbar.curend = blitz_charof(&c->sel->tagbar, ev->x, ev->y);
- if(c->sel->tagbar.curend < c->sel->tagbar.curstart) {
- char *tmp = c->sel->tagbar.curend;
- c->sel->tagbar.curend = c->sel->tagbar.curstart;
- c->sel->tagbar.curstart = tmp;
+ if((f = frame_of_win(ev->window))) {
+ if(ispointinrect(ev->x, ev->y, &f->tagbar.rect)) {
+ f->tagbar.curend = blitz_charof(&f->tagbar, ev->x, ev->y);
+ if(f->tagbar.curend < f->tagbar.curstart) {
+ char *tmp = f->tagbar.curend;
+ f->tagbar.curend = f->tagbar.curstart;
+ f->tagbar.curstart = tmp;
}
- draw_frame(c->sel);
+ draw_frame(f);
}
}
}
@@ -114,31 +114,31 @@ handle_motionnotify(XEvent *e)
static void
handle_buttonpress(XEvent *e)
{
- Client *c;
+ Frame *f;
XButtonPressedEvent *ev = &e->xbutton;
- if((c = client_of_win(ev->window))) {
+ if((f = frame_of_win(ev->window))) {
ev->state &= valid_mask;
- if(ispointinrect(ev->x, ev->y, &c->sel->tagbar.rect)) {
- c->sel->tagbar.curstart = c->sel->tagbar.curend
- = blitz_charof(&c->sel->tagbar, ev->x, ev->y);
- draw_frame(c->sel);
+ if(ispointinrect(ev->x, ev->y, &f->tagbar.rect)) {
+ f->tagbar.curstart = f->tagbar.curend
+ = blitz_charof(&f->tagbar, ev->x, ev->y);
+ draw_frame(f);
drag = True;
}
if((ev->state & def.mod) == def.mod) {
- focus(c, True);
+ focus(f->client, True);
switch(ev->button) {
case Button1:
- do_mouse_resize(c, CENTER);
+ do_mouse_resize(f->client, CENTER);
break;
case Button3:
- do_mouse_resize(c, quadofcoord(&c->rect, ev->x, ev->y));
+ do_mouse_resize(f->client, quadofcoord(&f->client->rect, ev->x, ev->y));
default:
break;
}
}
else if(ev->button == Button1)
- focus(c, True);
+ focus(f->client, True);
}
}
@@ -266,12 +266,12 @@ static void
handle_expose(XEvent *e)
{
XExposeEvent *ev = &e->xexpose;
- static Client *c;
+ static Frame *f;
if(ev->count == 0) {
if(ev->window == barwin)
draw_bar();
- else if((c = client_of_win(ev->window)))
- draw_frame(c->sel);
+ else if((f = frame_of_win(ev->window)))
+ draw_frame(f);
}
}
diff --git a/cmd/wm/wm.c b/cmd/wm/wm.c
@@ -27,7 +27,7 @@ static char version[] = "wmiiwm - " VERSION ", (C)opyright MMIV-MMVI Anselm R. G
static void
usage()
{
- fputs("usage: wmiiwm -a <address> [-r <wmiirc>] [-c] [-v]\n", stderr);
+ fputs("usage: wmiiwm -a <address> [-r <wmiirc>] [-v]\n", stderr);
exit(1);
}
@@ -226,7 +226,6 @@ int
main(int argc, char *argv[])
{
int i, j;
- int checkwm = 0;
char *address = nil, *wmiirc = nil, *namespace, *errstr;
struct passwd *passwd;
XSetWindowAttributes wa;
@@ -238,9 +237,6 @@ main(int argc, char *argv[])
fprintf(stdout, "%s", version);
exit(0);
break;
- case 'c':
- checkwm = 1;
- break;
case 'a':
if(i + 1 < argc)
address = argv[++i];
@@ -276,11 +272,7 @@ main(int argc, char *argv[])
if(other_wm_running)
error("wmiiwm: another window manager is already running\n");
- if(checkwm) {
- XCloseDisplay(blz.display);
- exit(0);
- }
- /* above -c is checked */
+
if(!address)
usage();
@@ -414,7 +406,6 @@ main(int argc, char *argv[])
if(errstr)
fprintf(stderr, "wmii: fatal: %s\n", errstr);
- free(user); /* shut up leak detector */
ixp_server_close(&srv);
cleanup();
XCloseDisplay(blz.display);
diff --git a/cmd/wm/wm.h b/cmd/wm/wm.h
@@ -239,6 +239,7 @@ void move_client(Client *c, char *arg);
void size_client(Client *c, char *arg);
void newcol_client(Client *c, char *arg);
Client *sel_client();
+Frame *frame_of_win(Window w);
Client *client_of_win(Window w);
int idx_of_client(Client *c);
void update_client_grab(Client *c, Bool is_sel);