summaryrefslogtreecommitdiff
path: root/sys/src/cmd/samterm
diff options
context:
space:
mode:
authorOri Bernstein <ori@eigenstate.org>2020-04-25 15:18:04 -0700
committerOri Bernstein <ori@eigenstate.org>2020-04-25 15:18:04 -0700
commit60c34ebb2da2b9716169ae4e6db4816d02c28910 (patch)
tree068829c43c50fd7a7a489cebb11bf8706325741d /sys/src/cmd/samterm
parent7feab4dc5913c8d072d57e9cc7cc7b3815037fe8 (diff)
tweak selection criteria
grow selection from point of click, not start of selection region. starting at the beginning of the selection region causes the match logic to kick in, which is confusing.
Diffstat (limited to 'sys/src/cmd/samterm')
-rw-r--r--sys/src/cmd/samterm/flayer.c6
-rw-r--r--sys/src/cmd/samterm/flayer.h2
-rw-r--r--sys/src/cmd/samterm/main.c7
3 files changed, 9 insertions, 6 deletions
diff --git a/sys/src/cmd/samterm/flayer.c b/sys/src/cmd/samterm/flayer.c
index 944fee699..86ae922cc 100644
--- a/sys/src/cmd/samterm/flayer.c
+++ b/sys/src/cmd/samterm/flayer.c
@@ -250,7 +250,7 @@ fldelete(Flayer *l, long p0, long p1)
}
int
-flselect(Flayer *l)
+flselect(Flayer *l, ulong *p)
{
static int clickcount;
static Point clickpt = {-10, -10};
@@ -261,6 +261,7 @@ flselect(Flayer *l)
dt = mousep->msec - l->click;
dx = abs(mousep->xy.x - clickpt.x);
dy = abs(mousep->xy.y - clickpt.y);
+ *p = frcharofpt(&l->f, mousep->xy) + l->origin;
l->click = mousep->msec;
clickpt = mousep->xy;
@@ -270,7 +271,8 @@ flselect(Flayer *l)
clickcount = 0;
frselect(&l->f, mousectl);
- l->p0 = l->f.p0+l->origin, l->p1 = l->f.p1+l->origin;
+ l->p0 = l->f.p0+l->origin;
+ l->p1 = l->f.p1+l->origin;
return 0;
}
diff --git a/sys/src/cmd/samterm/flayer.h b/sys/src/cmd/samterm/flayer.h
index 0967999e5..24aafc55a 100644
--- a/sys/src/cmd/samterm/flayer.h
+++ b/sys/src/cmd/samterm/flayer.h
@@ -36,7 +36,7 @@ int flprepare(Flayer*);
Rectangle flrect(Flayer*, Rectangle);
void flrefresh(Flayer*, Rectangle, int);
void flresize(Rectangle);
-int flselect(Flayer*);
+int flselect(Flayer*, ulong*);
void flsetselect(Flayer*, long, long);
void flstart(Rectangle);
void flupfront(Flayer*);
diff --git a/sys/src/cmd/samterm/main.c b/sys/src/cmd/samterm/main.c
index ec584f58e..fe5dbab93 100644
--- a/sys/src/cmd/samterm/main.c
+++ b/sys/src/cmd/samterm/main.c
@@ -35,6 +35,7 @@ threadmain(int argc, char *argv[])
Text *t;
Rectangle r;
Flayer *nwhich;
+ ulong p;
getscreen(argc, argv);
iconinit();
@@ -105,12 +106,12 @@ threadmain(int argc, char *argv[])
current(nwhich);
else{
t=(Text *)which->user1;
- nclick = flselect(which);
+ nclick = flselect(which, &p);
if(nclick > 0){
if(nclick > 1)
- outTsl(Ttclick, t->tag, which->p0);
+ outTsl(Ttclick, t->tag, p);
else
- outTsl(Tdclick, t->tag, which->p0);
+ outTsl(Tdclick, t->tag, p);
t->lock++;
}else if(t!=&cmd)
outcmd();