diff options
author | rsc <devnull@localhost> | 2004-04-16 05:11:34 +0000 |
---|---|---|
committer | rsc <devnull@localhost> | 2004-04-16 05:11:34 +0000 |
commit | aba09191af8012bc7d6a1b998ac937875f728d0c (patch) | |
tree | ab250532dda256b397ec55bbbefcde68ca84ffbd /src | |
parent | 9fdc52c625d7d82939d15db498352e7b5a9dede0 (diff) | |
download | plan9port-aba09191af8012bc7d6a1b998ac937875f728d0c.tar.gz plan9port-aba09191af8012bc7d6a1b998ac937875f728d0c.tar.bz2 plan9port-aba09191af8012bc7d6a1b998ac937875f728d0c.zip |
add rog's chording fix.
Diffstat (limited to 'src')
-rw-r--r-- | src/cmd/acme/text.c | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/src/cmd/acme/text.c b/src/cmd/acme/text.c index 7177127d..aa58be1a 100644 --- a/src/cmd/acme/text.c +++ b/src/cmd/acme/text.c @@ -862,7 +862,7 @@ textselect(Text *t) { uint q0, q1; int b, x, y; - int state; + int state, op; selecttext = t; /* @@ -918,12 +918,12 @@ textselect(Text *t) clicktext = nil; textsetselect(t, q0, q1); flushimage(display, 1); - state = 0; /* undo when possible; +1 for cut, -1 for paste */ + state = op = 0; /* undo when possible; +1 for cut, -1 for paste */ while(mouse->buttons){ mouse->msec = 0; b = mouse->buttons; if(b & 6){ - if(state==0 && t->what==Body){ + if(state==0 && op==0 && t->what==Body){ seq++; filemark(t->w->body.file); } @@ -932,18 +932,18 @@ textselect(Text *t) winundo(t->w, TRUE); textsetselect(t, q0, t->q0); state = 0; - }else if(state != 1){ + }else if(state != 1 && op != -1){ cut(t, t, nil, TRUE, TRUE, nil, 0); - state = 1; + op = state = 1; } }else{ if(state==1 && t->what==Body){ winundo(t->w, TRUE); textsetselect(t, q0, t->q1); state = 0; - }else if(state != -1){ + }else if(state != -1 && op != 1){ paste(t, t, nil, TRUE, FALSE, nil, 0); - state = -1; + op = state = -1; } } textscrdraw(t); |