Introduction
Introduction Statistics Contact Development Disclaimer Help
tmanage off-screen tick better - plan9port - [fork] Plan 9 from user space
git clone git://src.adamsgaard.dk/plan9port
Log
Files
Refs
README
LICENSE
---
commit 7a3533513e6f401bf62d94d4577922771090ffb4
parent 813751d7549110861174912c9c12ea01dae0d084
Author: rsc <devnull@localhost>
Date: Thu, 10 May 2007 19:08:47 +0000
manage off-screen tick better
Diffstat:
M src/cmd/samterm/flayer.c | 24 +++++++++++++++++-------
M src/cmd/samterm/flayer.h | 2 +-
2 files changed, 18 insertions(+), 8 deletions(-)
---
diff --git a/src/cmd/samterm/flayer.c b/src/cmd/samterm/flayer.c
t@@ -274,6 +274,7 @@ void
flsetselect(Flayer *l, long p0, long p1)
{
ulong fp0, fp1;
+ int ticked;
l->click = 0;
if(l->visible==None || !flprepare(l)){
t@@ -281,9 +282,12 @@ flsetselect(Flayer *l, long p0, long p1)
return;
}
l->p0 = p0, l->p1 = p1;
- flfp0p1(l, &fp0, &fp1);
- if(fp0==l->f.p0 && fp1==l->f.p1)
+ flfp0p1(l, &fp0, &fp1, &ticked);
+ if(fp0==l->f.p0 && fp1==l->f.p1){
+ if(l->f.ticked != ticked)
+ frdrawseltick(&l->f, frptofchar(&l->f, fp0), fp0, fp1,…
return;
+ }
if(fp1<=l->f.p0 || fp0>=l->f.p1 || l->f.p0==l->f.p1 || fp0==fp1){
/* no overlap or trivial repainting */
t@@ -315,18 +319,23 @@ flsetselect(Flayer *l, long p0, long p1)
}
void
-flfp0p1(Flayer *l, ulong *pp0, ulong *pp1)
+flfp0p1(Flayer *l, ulong *pp0, ulong *pp1, int *ticked)
{
long p0 = l->p0-l->origin, p1 = l->p1-l->origin;
- if(p0 < 0)
+ *ticked = 1;
+ if(p0 < 0){
+ *ticked = 0;
p0 = 0;
+ }
if(p1 < 0)
p1 = 0;
if(p0 > l->f.nchars)
p0 = l->f.nchars;
- if(p1 > l->f.nchars)
+ if(p1 > l->f.nchars){
+ *ticked = 0;
p1 = l->f.nchars;
+ }
*pp0 = p0;
*pp1 = p1;
}
t@@ -401,6 +410,7 @@ flprepare(Flayer *l)
Frame *f;
ulong n;
Rune *r;
+ int ticked;
if(l->visible == None)
return 0;
t@@ -418,8 +428,8 @@ flprepare(Flayer *l)
r = (*l->textfn)(l, n, &n);
frinsert(f, r, r+n, (ulong)0);
frdrawsel(f, frptofchar(f, f->p0), f->p0, f->p1, 0);
- flfp0p1(l, &f->p0, &f->p1);
- frdrawsel(f, frptofchar(f, f->p0), f->p0, f->p1, 1);
+ flfp0p1(l, &f->p0, &f->p1, &ticked);
+ frdrawseltick(f, frptofchar(f, f->p0), f->p0, f->p1, 1, ticked…
l->lastsr = ZR;
scrdraw(l, scrtotal(l));
}
diff --git a/src/cmd/samterm/flayer.h b/src/cmd/samterm/flayer.h
t@@ -28,7 +28,7 @@ struct Flayer
void flborder(Flayer*, int);
void flclose(Flayer*);
void fldelete(Flayer*, long, long);
-void flfp0p1(Flayer*, ulong*, ulong*);
+void flfp0p1(Flayer*, ulong*, ulong*, int*);
void flinit(Flayer*, Rectangle, Font*, Image**);
void flinsert(Flayer*, Rune*, Rune*, long);
void flnew(Flayer*, Rune *(*fn)(Flayer*, long, ulong*), int, void*);
You are viewing proxied material from mx1.adamsgaard.dk. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.