diff options
author | cinap_lenrek <cinap_lenrek@felloff.net> | 2020-05-07 23:28:55 +0200 |
---|---|---|
committer | cinap_lenrek <cinap_lenrek@felloff.net> | 2020-05-07 23:28:55 +0200 |
commit | 2c3e60d95b0beafa25845b401ed9996ebe8100fb (patch) | |
tree | ceb82406df077209c5e85ef5a0c66b4c24498000 /sys/src | |
parent | 04066fe973c628476fbe9eb65bf62a67334987f7 (diff) | |
parent | ec4011acf78e176c226d69d355c3996dc3a1062c (diff) |
merge
Diffstat (limited to 'sys/src')
-rw-r--r-- | sys/src/cmd/acme/text.c | 8 | ||||
-rw-r--r-- | sys/src/cmd/aux/getflags.c | 35 | ||||
-rw-r--r-- | sys/src/cmd/aux/usage.c | 7 | ||||
-rw-r--r-- | sys/src/cmd/rio/wind.c | 6 |
4 files changed, 43 insertions, 13 deletions
diff --git a/sys/src/cmd/acme/text.c b/sys/src/cmd/acme/text.c index 9611a2e4b..ebbc5dcfd 100644 --- a/sys/src/cmd/acme/text.c +++ b/sys/src/cmd/acme/text.c @@ -868,7 +868,8 @@ textcommit(Text *t, int tofile) static Text *clicktext; static uint clickmsec; -static int clickcount; +static int clickcount; +static Point clickpt; static Text *selecttext; static uint selectq; @@ -927,9 +928,12 @@ textselect(Text *t) b = mouse->buttons; q0 = t->q0; q1 = t->q1; + dx = abs(clickpt.x - mouse->xy.x); + dy = abs(clickpt.y - mouse->xy.y); + clickpt = mouse->xy; selectq = t->org+frcharofpt(t, mouse->xy); clickcount++; - if(mouse->msec-clickmsec >= 500 || selecttext != t || clickcount > 3) + if(mouse->msec-clickmsec >= 500 || selecttext != t || clickcount > 3 || dx > 3 || dy > 3) clickcount = 0; if(clickcount >= 1 && selecttext==t && mouse->msec-clickmsec < 500){ textstretchsel(t, selectq, &q0, &q1, clickcount); diff --git a/sys/src/cmd/aux/getflags.c b/sys/src/cmd/aux/getflags.c index 880f0dc38..f4d97271b 100644 --- a/sys/src/cmd/aux/getflags.c +++ b/sys/src/cmd/aux/getflags.c @@ -10,17 +10,38 @@ usage(void) } char* +skipspace(char *p) +{ + while(isspace(*p)) + p++; + return p; +} + +char* +nextarg(char *p) +{ + char *s; + + s = strchr(p, ','); + if(s == nil) + return p+strlen(p); /* to \0 */ + while(*s == ',' || isspace(*s)) + s++; + return s; +} + +char* findarg(char *flags, Rune r) { char *p; Rune rr; - - for(p=flags; p!=(char*)1; p=strchr(p, ',')+1){ + + for(p=skipspace(flags); *p; p=nextarg(p)){ chartorune(&rr, p); if(rr == r) return p; } - return nil; + return nil; } char* @@ -44,10 +65,8 @@ countargs(char *p) int n; n = 1; - while(*p == ' ') - p++; - for(; *p && *p != ','; p++) - if(*p == ' ' && *(p-1) != ' ') + for(p=skipspace(p); *p && *p != ','; p++) + if(isspace(*p) && !isspace(*(p-1))) n++; return n; } @@ -71,7 +90,7 @@ main(int argc, char *argv[]) } fmtfdinit(&fmt, 1, buf, sizeof buf); - for(p=flags; p!=(char*)1 && *p != 0; p=strchr(p, ',')+1){ + for(p=skipspace(flags); *p; p=nextarg(p)){ s = e = nil; if(p[1] == ':'){ s = p + 2; diff --git a/sys/src/cmd/aux/usage.c b/sys/src/cmd/aux/usage.c index a2f8c7c2c..fa9d0b1c7 100644 --- a/sys/src/cmd/aux/usage.c +++ b/sys/src/cmd/aux/usage.c @@ -1,5 +1,6 @@ #include <u.h> #include <libc.h> +#include <ctype.h> void main(void) @@ -30,9 +31,11 @@ main(void) if(flags[0]){ single = 0; for(p=flags; *p; ){ + while(isspace(*p)) + p++; p += chartorune(&r, p); if(*p == ':') - while(*p != '\0' && *p != ',' && *p != ' ') + while(*p && *p != ',' && !isspace(*p)) p++; if(*p == ',' || *p == 0){ if(!single){ @@ -44,7 +47,7 @@ main(void) p++; continue; } - while(*p == ' ') + while(isspace(*p)) p++; if(single){ fmtprint(&fmt, "]"); diff --git a/sys/src/cmd/rio/wind.c b/sys/src/cmd/rio/wind.c index a9cfd248e..2aa3dd715 100644 --- a/sys/src/cmd/rio/wind.c +++ b/sys/src/cmd/rio/wind.c @@ -962,6 +962,7 @@ wdelete(Window *w, uint q0, uint q1) static Window *clickwin; static uint clickmsec; +static Point clickpt; static uint clickcount; static Window *selectwin; static uint selectq; @@ -1018,9 +1019,12 @@ wselect(Window *w) b = w->mc.buttons; q0 = w->q0; q1 = w->q1; + dx = abs(clickpt.x - w->mc.xy.x); + dy = abs(clickpt.y - w->mc.xy.y); + clickpt = w->mc.xy; selectq = w->org+frcharofpt(w, w->mc.xy); clickcount++; - if(w->mc.msec-clickmsec >= 500 || clickwin != w || clickcount > 3) + if(w->mc.msec-clickmsec >= 500 || clickwin != w || clickcount > 3 || dx > 3 || dy > 3) clickcount = 0; if(clickwin == w && clickcount >= 1 && w->mc.msec-clickmsec < 500){ mode = (clickcount > 2) ? 2 : clickcount; |