| tFixes from Axel Belinfante. - plan9port - [fork] Plan 9 from user space | |
| git clone git://src.adamsgaard.dk/plan9port | |
| Log | |
| Files | |
| Refs | |
| README | |
| LICENSE | |
| --- | |
| commit 7934b1c6d48cdd800ea680d8302b2bbce6192fc7 | |
| parent 3a9dccd76ee6916d5586a3fba49cb8e0edb3ca5d | |
| Author: rsc <devnull@localhost> | |
| Date: Mon, 5 Apr 2004 20:58:16 +0000 | |
| Fixes from Axel Belinfante. | |
| Fix 9term New border flash too. | |
| Diffstat: | |
| M src/cmd/rio/color.c | 5 ++++- | |
| M src/cmd/rio/fns.h | 2 +- | |
| M src/cmd/rio/grab.c | 18 ++++++++++-------- | |
| M src/cmd/rio/main.c | 53 +++++++++++++++--------------… | |
| M 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 | |
| t@@ -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… | |
| { | |
| int r, g, b; | |
| t@@ -36,6 +36,9 @@ colorpixel(Display *dpy, int depth, unsigned long rgb, unsig… | |
| 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 | |
| t@@ -10,7 +10,7 @@ | |
| /* color.c */ | |
| -unsigned long colorpixel(Display*, int, unsigned long, unsigned long); | |
| +unsigned long colorpixel(Display*, ScreenInfo*, int, unsigned long, unsigned l… | |
| /* main.c */ | |
| void usage(); | |
| diff --git a/src/cmd/rio/grab.c b/src/cmd/rio/grab.c | |
| t@@ -420,8 +420,10 @@ pullcalc(Client *c, int x, int y, BorderOrient bl, int in… | |
| 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; | |
| } | |
| t@@ -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… | |
| + if (debug) fprintf(stderr, "drawbound %d %dx%d+%d+%d\n", drawing, c->d… | |
| s = c->screen; | |
| x = c->x; | |
| t@@ -523,12 +525,12 @@ sweepdrag(Client *c, int but, XButtonEvent *e0, BorderOr… | |
| 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); | |
| t@@ -545,7 +547,7 @@ sweepdrag(Client *c, int but, XButtonEvent *e0, BorderOrie… | |
| XGrabServer(dpy); | |
| idle = 0; | |
| } | |
| - if(e0 || bl) | |
| + if(e0 || bl != BorderUnknown) | |
| notmoved = recalc(c, rx, ry, bl, notmo… | |
| else | |
| notmoved = recalc(c, rx-cx, ry-cy, bl,… | |
| t@@ -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 | |
| t@@ -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 | |
| t@@ -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->blac… | |
| + 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, DefaultDe… | |
| t@@ -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; | |
| t@@ -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->wh… | |
| attrs.colormap = s->def_cmap; | |
| s->menuwin = XCreateWindow(dpy, s->root, 0, 0, 1, 1, 2, | |
| s->depth, | |
| CopyFromParent, | |
| s->vis, | |
| - CWBackPixel | CWBorderPixel | … | |
| + CWBackPixel | CWBorderPixel | … | |
| &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->bl… | |
| attrs.colormap = s->def_cmap; | |
| s->sweepwin = XCreateWindow(dpy, s->root, 0, 0, 1, 1, 4, | |
| s->depth, | |
| CopyFromParent, | |
| s->vis, | |
| - CWBackPixel | CWBorderPixel | … | |
| + CWBackPixel | CWBorderPixel | … | |
| &attrs | |
| ); | |
| } | |
| diff --git a/src/cmd/rio/manage.c b/src/cmd/rio/manage.c | |
| t@@ -32,6 +32,10 @@ manage(Client *c, int mapped) | |
| c->is9term = 0; | |
| if(isNew){ | |
| c->is9term = strstr(c->class, "term") || strstr(c->cla… | |
| + if(c->is9term){ | |
| + c->dx = 0; | |
| + c->dy = 0; | |
| + } | |
| isNew = 0; | |
| } | |
| } |