diff options
author | rsc <devnull@localhost> | 2004-04-05 20:58:16 +0000 |
---|---|---|
committer | rsc <devnull@localhost> | 2004-04-05 20:58:16 +0000 |
commit | 7934b1c6d48cdd800ea680d8302b2bbce6192fc7 (patch) | |
tree | 7c5c82d87aa39e9728aeef21c83b220d245032b9 | |
parent | 3a9dccd76ee6916d5586a3fba49cb8e0edb3ca5d (diff) | |
download | plan9port-7934b1c6d48cdd800ea680d8302b2bbce6192fc7.tar.gz plan9port-7934b1c6d48cdd800ea680d8302b2bbce6192fc7.tar.bz2 plan9port-7934b1c6d48cdd800ea680d8302b2bbce6192fc7.zip |
Fixes from Axel Belinfante.
Fix 9term New border flash too.
-rw-r--r-- | src/cmd/rio/color.c | 5 | ||||
-rw-r--r-- | src/cmd/rio/fns.h | 2 | ||||
-rw-r--r-- | src/cmd/rio/grab.c | 18 | ||||
-rw-r--r-- | src/cmd/rio/main.c | 53 | ||||
-rw-r--r-- | src/cmd/rio/manage.c | 4 |
5 files changed, 45 insertions, 37 deletions
diff --git a/src/cmd/rio/color.c b/src/cmd/rio/color.c index e3410bba..d5854724 100644 --- a/src/cmd/rio/color.c +++ b/src/cmd/rio/color.c @@ -8,7 +8,7 @@ #include "fns.h" unsigned long -colorpixel(Display *dpy, int depth, unsigned long rgb, unsigned long def) +colorpixel(Display *dpy, ScreenInfo *s, int depth, unsigned long rgb, unsigned long def) { int r, g, b; @@ -36,6 +36,9 @@ colorpixel(Display *dpy, int depth, unsigned long rgb, unsigned long def) return (r<<11) | (g<<5) | b; case 24: case 32: + /* try to find byte order */ + if (s->vis->red_mask & 0xff) + return (r) | (g<<8) | (b<<16); /* OK on Sun */ return rgb; } } diff --git a/src/cmd/rio/fns.h b/src/cmd/rio/fns.h index e3c214d2..90cfb273 100644 --- a/src/cmd/rio/fns.h +++ b/src/cmd/rio/fns.h @@ -10,7 +10,7 @@ /* color.c */ -unsigned long colorpixel(Display*, int, unsigned long, unsigned long); +unsigned long colorpixel(Display*, ScreenInfo*, int, unsigned long, unsigned long); /* main.c */ void usage(); diff --git a/src/cmd/rio/grab.c b/src/cmd/rio/grab.c index 9b987ea2..8838ed4e 100644 --- a/src/cmd/rio/grab.c +++ b/src/cmd/rio/grab.c @@ -420,8 +420,10 @@ pullcalc(Client *c, int x, int y, BorderOrient bl, int init) c->y = py; /* compensate position for size changed due to size hints */ - c->x -= spx*(c->dx - rdx); - c->y -= spy*(c->dy - rdy); + if(spx) + c->x -= c->dx - rdx; + if(spy) + c->y -= c->dy - rdy; return init; } @@ -441,7 +443,7 @@ drawbound(Client *c, int drawing) int x, y, dx, dy; ScreenInfo *s; - if (debug) fprintf(stderr, "drawbound %dx%d +%d+%d\n", c->dx, c->dy, c->x, c->y); + if (debug) fprintf(stderr, "drawbound %d %dx%d+%d+%d\n", drawing, c->dx, c->dy, c->x, c->y); s = c->screen; x = c->x; @@ -523,12 +525,12 @@ sweepdrag(Client *c, int but, XButtonEvent *e0, BorderOrient bl, int (*recalc)(C c->y -= BORDER; c->dx += 2*BORDER; c->dy += 2*BORDER; - if (bl || e0 == 0) + if (bl != BorderUnknown || e0 == 0) getmouse(&cx, &cy, c->screen); else getmouse(&c->x, &c->y, c->screen); XGrabServer(dpy); - if (bl) { + if (bl != BorderUnknown) { notmoved = recalc(c, cx, cy, bl, notmoved); } drawbound(c, 1); @@ -545,7 +547,7 @@ sweepdrag(Client *c, int but, XButtonEvent *e0, BorderOrient bl, int (*recalc)(C XGrabServer(dpy); idle = 0; } - if(e0 || bl) + if(e0 || bl != BorderUnknown) notmoved = recalc(c, rx, ry, bl, notmoved); else notmoved = recalc(c, rx-cx, ry-cy, bl, notmoved); @@ -615,7 +617,7 @@ sweep(Client *c, int but, XButtonEvent *ignored) return 0; } XChangeActivePointerGrab(dpy, ButtonMask, s->boxcurs, e->time); - return sweepdrag(c, but, e, 0, sweepcalc); + return sweepdrag(c, but, e, BorderUnknown, sweepcalc); } int @@ -650,7 +652,7 @@ drag(Client *c, int but) graberror("drag", status); /* */ return 0; } - return sweepdrag(c, but, 0, 0, dragcalc); + return sweepdrag(c, but, 0, BorderUnknown, dragcalc); } void diff --git a/src/cmd/rio/main.c b/src/cmd/rio/main.c index c25f8a4c..c79b9dbf 100644 --- a/src/cmd/rio/main.c +++ b/src/cmd/rio/main.c @@ -284,11 +284,11 @@ initscreen(ScreenInfo *s, int i, int background) s->black = BlackPixel(dpy, i); s->white = WhitePixel(dpy, i); - s->activeholdborder = colorpixel(dpy, s->depth, 0x000099, s->white); - s->inactiveholdborder = colorpixel(dpy, s->depth, 0x005DBB, s->black); - s->activeborder = colorpixel(dpy, s->depth ,0x55AAAA, s->black); - s->inactiveborder = colorpixel(dpy, s->depth, 0x9EEEEE, s->white); - s->red = colorpixel(dpy, s->depth, 0xDD0000, s->white); + s->activeholdborder = colorpixel(dpy, s, s->depth, 0x000099, s->white); + s->inactiveholdborder = colorpixel(dpy, s, s->depth, 0x005DBB, s->black); + s->activeborder = colorpixel(dpy, s, s->depth, 0x55AAAA, s->black); + s->inactiveborder = colorpixel(dpy, s, s->depth, 0x9EEEEE, s->white); + s->red = colorpixel(dpy, s, s->depth, 0xDD0000, s->white); s->width = WidthOfScreen(ScreenOfDisplay(dpy, i)); s->height = HeightOfScreen(ScreenOfDisplay(dpy, i)); s->bkup[0] = XCreatePixmap(dpy, s->root, 2*s->width, BORDER, DefaultDepth(dpy, i)); @@ -313,23 +313,9 @@ initscreen(ScreenInfo *s, int i, int background) gv.foreground = s->red; s->gcred = XCreateGC(dpy, s->root, gmask, &gv); - gv.foreground = colorpixel(dpy, s->depth, 0xEEEEEE, s->black); + gv.foreground = colorpixel(dpy, s, s->depth, 0xEEEEEE, s->black); s->gcsweep = XCreateGC(dpy, s->root, gmask, &gv); - gv.foreground = colorpixel(dpy, s->depth, 0xE9FFE9, s->white); - s->gcmenubg = XCreateGC(dpy, s->root, gmask, &gv); - - gv.foreground = colorpixel(dpy, s->depth, 0x448844, s->black); - s->gcmenubgs = XCreateGC(dpy, s->root, gmask, &gv); - - gv.foreground = s->black; - gv.background = colorpixel(dpy, s->depth, 0xE9FFE9, s->white); - s->gcmenufg = XCreateGC(dpy, s->root, gmask, &gv); - - gv.foreground = colorpixel(dpy, s->depth, 0xE9FFE9, s->white); - gv.background = colorpixel(dpy, s->depth, 0x448844, s->black); - s->gcmenufgs = XCreateGC(dpy, s->root, gmask, &gv); - initcurs(s); attr.cursor = s->arrow; @@ -346,28 +332,41 @@ initscreen(ScreenInfo *s, int i, int background) } else system("xsetroot -solid grey30"); - attrs.border_pixel = colorpixel(dpy, s->depth, 0x88CC88, s->black); - attrs.background_pixel = colorpixel(dpy, s->depth, 0xE9FFE9, s->white); - attrs.save_under = True; /* Does this help us in anyway? */ + attrs.border_pixel = colorpixel(dpy, s, s->depth, 0x88CC88, s->black); + attrs.background_pixel = colorpixel(dpy, s, s->depth, 0xE9FFE9, s->white); attrs.colormap = s->def_cmap; s->menuwin = XCreateWindow(dpy, s->root, 0, 0, 1, 1, 2, s->depth, CopyFromParent, s->vis, - CWBackPixel | CWBorderPixel | CWSaveUnder|CWColormap, + CWBackPixel | CWBorderPixel | CWColormap, &attrs ); + + gv.foreground = colorpixel(dpy, s, s->depth, 0xE9FFE9, s->white); + s->gcmenubg = XCreateGC(dpy, s->menuwin, gmask, &gv); + + gv.foreground = colorpixel(dpy, s, s->depth, 0x448844, s->black); + s->gcmenubgs = XCreateGC(dpy, s->menuwin, gmask, &gv); + + gv.foreground = s->black; + gv.background = colorpixel(dpy, s, s->depth, 0xE9FFE9, s->white); + s->gcmenufg = XCreateGC(dpy, s->menuwin, gmask, &gv); + + gv.foreground = colorpixel(dpy, s, s->depth, 0xE9FFE9, s->white); + gv.background = colorpixel(dpy, s, s->depth, 0x448844, s->black); + s->gcmenufgs = XCreateGC(dpy, s->menuwin, gmask, &gv); + attrs.border_pixel = s->red; - attrs.background_pixel = colorpixel(dpy, s->depth, 0xEEEEEE, s->black); - attrs.save_under = True; /* Does this help us in anyway? */ + attrs.background_pixel = colorpixel(dpy, s, s->depth, 0xEEEEEE, s->black); attrs.colormap = s->def_cmap; s->sweepwin = XCreateWindow(dpy, s->root, 0, 0, 1, 1, 4, s->depth, CopyFromParent, s->vis, - CWBackPixel | CWBorderPixel | CWSaveUnder|CWColormap, + CWBackPixel | CWBorderPixel | CWColormap, &attrs ); } diff --git a/src/cmd/rio/manage.c b/src/cmd/rio/manage.c index 8fc08364..1478fda0 100644 --- a/src/cmd/rio/manage.c +++ b/src/cmd/rio/manage.c @@ -32,6 +32,10 @@ manage(Client *c, int mapped) c->is9term = 0; if(isNew){ c->is9term = strstr(c->class, "term") || strstr(c->class, "Term"); + if(c->is9term){ + c->dx = 0; + c->dy = 0; + } isNew = 0; } } |