mirror of
https://github.com/9fans/plan9port.git
synced 2025-01-24 11:41:58 +00:00
Fixes from Axel Belinfante.
Fix 9term New border flash too.
This commit is contained in:
parent
3a9dccd76e
commit
7934b1c6d4
5 changed files with 45 additions and 37 deletions
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
);
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue