From 8167f136aa08f34ef45577978b6bfda75f334d86 From: Ori Bernstein Date: Sun, 12 Apr 2020 11:58:12 -0700 Subject: [PATCH] remove useless panel decoration. stop underlining hyperlinks, and instead make them blue. currently, lines, borders, bullet points, etc., are defined in all sorts of different places, not even entirely inside of libpanel. i made no attempt to address this. in rio, we ended up putting all the color definitions into one file, for easy modification. diff -urN a/libpanel/draw.c b/libpanel/draw.c --- a/libpanel/draw.c Sun Apr 12 11:32:48 2020 +++ b/libpanel/draw.c Sun Apr 12 11:58:12 2020 @@ -19,7 +19,7 @@ plldepth=ldepth; pl_white=allocimage(display, Rect(0,0,1,1), screen->chan, 1, 0xFFFFFFFF); pl_light=allocimagemix(display, DPalebluegreen, DWhite); - pl_dark =allocimage(display, Rect(0,0,1,1), screen->chan, 1, DPurpleblue); + pl_dark=allocimage(display, Rect(0,0,1,1), screen->chan, 1, DPurpleblue); pl_black=allocimage(display, Rect(0,0,1,1), screen->chan, 1, 0x000000FF); pl_hilit=allocimage(display, Rect(0,0,1,1), CHAN1(CAlpha,8), 1, 0x80); if(pl_white==0 || pl_light==0 || pl_black==0 || pl_dark==0) return 0; @@ -38,6 +38,13 @@ } Rectangle pl_boxoutline(Image *b, Rectangle r, int style, int fill){ if(plldepth==0) switch(style){ + case SUP: + case TUP: + pl_relief(b, pl_white, pl_white, r, BWID); + r=insetrect(r, BWID); + if(fill) draw(b, r, pl_white, 0, ZP); + else border(b, r, SPACE, pl_white, ZP); + break; case UP: pl_relief(b, pl_black, pl_black, r, BWID); r=insetrect(r, BWID); @@ -68,6 +75,13 @@ break; } else switch(style){ + case SUP: + case TUP: + pl_relief(b, pl_white, pl_white, r, BWID); + r=insetrect(r, BWID); + if(fill) draw(b, r, pl_light, 0, ZP); + else border(b, r, SPACE, pl_white, ZP); + break; case UP: pl_relief(b, pl_white, pl_black, r, BWID); r=insetrect(r, BWID); @@ -97,7 +111,10 @@ else border(b, r, SPACE, pl_white, ZP); break; } - return insetrect(r, SPACE); + switch(style){ + case SUP: return insetrect(r, SPACE-SPACE); + default: return insetrect(r, SPACE); + } } Rectangle pl_outline(Image *b, Rectangle r, int style){ return pl_boxoutline(b, r, style, 0); diff -urN a/libpanel/event.c b/libpanel/event.c --- a/libpanel/event.c Sun Apr 12 11:32:48 2020 +++ b/libpanel/event.c Sun Apr 12 11:58:12 2020 @@ -9,8 +9,10 @@ plkbfocus=g; } void plkeyboard(Rune c){ - if(plkbfocus) + if(plkbfocus){ plkbfocus->type(plkbfocus, c); + flushimage(display, 1); + } } /* @@ -45,4 +47,5 @@ g->flags&=~REMOUSE; g->lastmouse=hit; } + flushimage(display, 1); } diff -urN a/libpanel/pldefs.h b/libpanel/pldefs.h --- a/libpanel/pldefs.h Sun Apr 12 11:32:48 2020 +++ b/libpanel/pldefs.h Sun Apr 12 11:58:12 2020 @@ -17,7 +17,9 @@ * States, also styles */ enum{ - UP, + SUP, // scrollbar + TUP, // textview + UP, // deprecated DOWN1, DOWN2, DOWN3, diff -urN a/libpanel/popup.c b/libpanel/popup.c --- a/libpanel/popup.c Sun Apr 12 11:32:48 2020 +++ b/libpanel/popup.c Sun Apr 12 11:58:12 2020 @@ -65,6 +65,7 @@ if(g->state!=DOWN){ if(pp->save!=0){ draw(g->b, p->r, pp->save, 0, p->r.min); + flushimage(display, 1); freeimage(pp->save); pp->save=0; } diff -urN a/libpanel/rtext.c b/libpanel/rtext.c --- a/libpanel/rtext.c Sun Apr 12 11:32:48 2020 +++ b/libpanel/rtext.c Sun Apr 12 11:58:12 2020 @@ -175,7 +175,9 @@ Point lp, sp; Rectangle dr; Image *bb; + Image *pl_blue; + pl_blue=allocimage(display, Rect(0,0,1,1), RGB24, 1, 0x0000FFFF); bb = b; if(backup==0 || backup->chan!=b->chan || rectinrect(r, backup->r)==0){ freeimage(backup); @@ -195,7 +197,6 @@ && dr.min.xb){ draw(b, insetrect(dr, BORD), t->b, 0, t->b->r.min); - if(t->flags&PL_HOT) border(b, dr, 1, display->black, ZP); if(t->flags&PL_STR) { line(b, Pt(dr.min.x, dr.min.y), Pt(dr.max.x, dr.max.y), Endsquare, Endsquare, 0, @@ -214,7 +215,10 @@ pl_stuffbitmap(t->p, bb); } else{ - string(b, dr.min, display->black, ZP, t->font, t->text); + if(t->flags&PL_HOT) + string(b, dr.min, pl_blue, ZP, t->font, t->text); + else + string(b, dr.min,display->black, ZP, t->font, t->text); if(t->flags&PL_SEL) pl_highlight(b, dr); if(t->flags&PL_STR){ @@ -227,15 +231,6 @@ sp = Pt(dr.max.x, y); } else sp = ZP; - if(t->flags&PL_HOT){ - int y = dr.max.y - 1; - if(lp.y != y) - lp = Pt(dr.min.x, y); - line(b, lp, Pt(dr.max.x, y), - Endsquare, Endsquare, 0, - display->black, ZP); - lp = Pt(dr.max.x, y); - } else lp = ZP; continue; } diff -urN a/libpanel/scrollbar.c b/libpanel/scrollbar.c --- a/libpanel/scrollbar.c Sun Apr 12 11:32:48 2020 +++ b/libpanel/scrollbar.c Sun Apr 12 11:58:12 2020 @@ -16,7 +16,7 @@ void pl_drawscrollbar(Panel *p){ Scrollbar *sp; sp=p->data; - sp->interior=pl_outline(p->b, p->r, p->state); + sp->interior=pl_outline(p->b, p->r, SUP); /* SUP was p->state */ pl_sliderupd(p->b, sp->interior, sp->dir, sp->lo, sp->hi); } int pl_hitscrollbar(Panel *g, Mouse *m){ diff -urN a/libpanel/textview.c b/libpanel/textview.c --- a/libpanel/textview.c Sun Apr 12 11:32:48 2020 +++ b/libpanel/textview.c Sun Apr 12 11:58:12 2020 @@ -47,7 +47,7 @@ Point size; tp=p->data; - r=pl_outline(p->b, p->r, UP); + r=pl_outline(p->b, p->r, TUP); twid=r.max.x-r.min.x; if(twid!=tp->twid){ tp->twid=twid; @@ -80,7 +80,7 @@ if(oldhitword==oldhitfirst) pl_passon(oldhitword, m); if(m->buttons&OUT) - p->state=UP; + p->state=PASSIVE; else if(m->buttons&7){ p->state=DOWN; tp->buttons=m->buttons; @@ -100,7 +100,7 @@ } else{ if(p->state==DOWN) hitme=1; - p->state=UP; + p->state=PASSIVE; } if(tp->hitfirst!=oldhitfirst || tp->hitword!=oldhitword){ plrtseltext(tp->text, tp->hitword, tp->hitfirst); @@ -214,7 +214,7 @@ Textview *tp; tp=v->data; v->flags=flags|LEAF; - v->state=UP; + v->state=PASSIVE; v->draw=pl_drawtextview; v->hit=pl_hittextview; v->type=pl_typetextview; diff -urN a/libpanel/textwin.c b/libpanel/textwin.c --- a/libpanel/textwin.c Sun Apr 12 11:32:48 2020 +++ b/libpanel/textwin.c Sun Apr 12 11:58:12 2020 @@ -136,7 +136,7 @@ er=t->text+last; for(r=t->text+first,lp=t->loc+(first-t->top);r!=er;r++,lp++){ if(lp->y+t->hgt>t->r.max.y){ - fprint(2, "chr %C, index %ld of %d, loc %d %d, off bottom\n", + fprint(2, "chr %C, index %lld of %d, loc %d %d, off bottom\n", *r, lp-t->loc, t->bot-t->top, lp->x, lp->y); return; }