216 lines
4.8 KiB
Diff
216 lines
4.8 KiB
Diff
|
diff -r -c p9p/src/cmd/sam/xec.c p9p-patched/src/cmd/sam/xec.c
|
||
|
*** p9p/src/cmd/sam/xec.c 2016-04-18 21:07:22.000000000 +0300
|
||
|
--- p9p-patched/src/cmd/sam/xec.c 2016-08-31 06:35:26.910876148 +0300
|
||
|
***************
|
||
|
*** 277,282 ****
|
||
|
--- 277,283 ----
|
||
|
else
|
||
|
while(n++ && undo(FALSE))
|
||
|
;
|
||
|
+ moveto(f, f->dot.r);
|
||
|
return TRUE;
|
||
|
}
|
||
|
|
||
|
diff -r -c p9p/src/cmd/samterm/flayer.c p9p-patched/src/cmd/samterm/flayer.c
|
||
|
*** p9p/src/cmd/samterm/flayer.c 2016-04-18 21:07:22.000000000 +0300
|
||
|
--- p9p-patched/src/cmd/samterm/flayer.c 2016-08-31 06:46:19.441411045 +0300
|
||
|
***************
|
||
|
*** 254,274 ****
|
||
|
int
|
||
|
flselect(Flayer *l)
|
||
|
{
|
||
|
- int ret;
|
||
|
if(l->visible!=All)
|
||
|
flupfront(l);
|
||
|
! frselect(&l->f, mousectl);
|
||
|
! ret = 0;
|
||
|
! if(l->f.p0==l->f.p1){
|
||
|
! if(mousep->msec-l->click<Clicktime && l->f.p0+l->origin==l->p0){
|
||
|
! ret = 1;
|
||
|
l->click = 0;
|
||
|
! }else
|
||
|
! l->click = mousep->msec;
|
||
|
! }else
|
||
|
! l->click = 0;
|
||
|
l->p0 = l->f.p0+l->origin, l->p1 = l->f.p1+l->origin;
|
||
|
! return ret;
|
||
|
}
|
||
|
|
||
|
void
|
||
|
--- 254,271 ----
|
||
|
int
|
||
|
flselect(Flayer *l)
|
||
|
{
|
||
|
if(l->visible!=All)
|
||
|
flupfront(l);
|
||
|
! if(l->f.p0==l->f.p1)
|
||
|
! if(mousep->msec-l->click<Clicktime && l->f.p0+l->origin==l->p0 &&
|
||
|
! l->f.p0==frcharofpt(&l->f, mousep->xy)){
|
||
|
l->click = 0;
|
||
|
! return 1;
|
||
|
! }
|
||
|
! l->click = mousep->msec;
|
||
|
! frselect(&l->f, mousectl);
|
||
|
l->p0 = l->f.p0+l->origin, l->p1 = l->f.p1+l->origin;
|
||
|
! return 0;
|
||
|
}
|
||
|
|
||
|
void
|
||
|
diff -r -c p9p/src/cmd/samterm/main.c p9p-patched/src/cmd/samterm/main.c
|
||
|
*** p9p/src/cmd/samterm/main.c 2016-04-18 21:07:22.000000000 +0300
|
||
|
--- p9p-patched/src/cmd/samterm/main.c 2016-08-31 06:52:05.670322598 +0300
|
||
|
***************
|
||
|
*** 23,33 ****
|
||
|
char hostlock = 1;
|
||
|
char hasunlocked = 0;
|
||
|
int maxtab = 8;
|
||
|
- int chord;
|
||
|
int autoindent;
|
||
|
|
||
|
- #define chording 0 /* code here for reference but it causes deadlocks */
|
||
|
-
|
||
|
void
|
||
|
notifyf(void *a, char *msg)
|
||
|
{
|
||
|
--- 23,30 ----
|
||
|
***************
|
||
|
*** 39,45 ****
|
||
|
void
|
||
|
threadmain(int argc, char *argv[])
|
||
|
{
|
||
|
! int i, got, scr, w;
|
||
|
Text *t;
|
||
|
Rectangle r;
|
||
|
Flayer *nwhich;
|
||
|
--- 36,42 ----
|
||
|
void
|
||
|
threadmain(int argc, char *argv[])
|
||
|
{
|
||
|
! int i, got, scr, chord;
|
||
|
Text *t;
|
||
|
Rectangle r;
|
||
|
Flayer *nwhich;
|
||
|
***************
|
||
|
*** 84,89 ****
|
||
|
--- 81,87 ----
|
||
|
startnewfile(Tstartcmdfile, &cmd);
|
||
|
|
||
|
got = 0;
|
||
|
+ chord = 0;
|
||
|
if(protodebug) print("loop\n");
|
||
|
for(;;got = waitforio()){
|
||
|
if(hasunlocked && RESIZED())
|
||
|
***************
|
||
|
*** 108,163 ****
|
||
|
continue;
|
||
|
}
|
||
|
nwhich = flwhich(mousep->xy);
|
||
|
! scr = which && ptinrect(mousep->xy, which->scroll);
|
||
|
if(mousep->buttons)
|
||
|
flushtyping(1);
|
||
|
! if(chording && chord==1 && !mousep->buttons)
|
||
|
chord = 0;
|
||
|
! if(chording && chord)
|
||
|
chord |= mousep->buttons;
|
||
|
! else if(mousep->buttons&1){
|
||
|
! if(nwhich){
|
||
|
! if(nwhich!=which)
|
||
|
! current(nwhich);
|
||
|
! else if(scr)
|
||
|
! scroll(which, 1);
|
||
|
! else{
|
||
|
! t=(Text *)which->user1;
|
||
|
! if(flselect(which)){
|
||
|
! outTsl(Tdclick, t->tag, which->p0);
|
||
|
! t->lock++;
|
||
|
! }else if(t!=&cmd)
|
||
|
! outcmd();
|
||
|
! if(mousep->buttons&1)
|
||
|
! chord = mousep->buttons;
|
||
|
}
|
||
|
}
|
||
|
}else if((mousep->buttons&2) && which){
|
||
|
if(scr)
|
||
|
scroll(which, 2);
|
||
|
else
|
||
|
menu2hit();
|
||
|
! }else if((mousep->buttons&4)){
|
||
|
if(scr)
|
||
|
! scroll(which, 3);
|
||
|
else
|
||
|
menu3hit();
|
||
|
}
|
||
|
mouseunblock();
|
||
|
}
|
||
|
- if(chording && chord){
|
||
|
- t = (Text*)which->user1;
|
||
|
- if(!t->lock && !hostlock){
|
||
|
- w = which-t->l;
|
||
|
- if(chord&2){
|
||
|
- cut(t, w, 1, 1);
|
||
|
- chord &= ~2;
|
||
|
- }else if(chord&4){
|
||
|
- paste(t, w);
|
||
|
- chord &= ~4;
|
||
|
- }
|
||
|
- }
|
||
|
- }
|
||
|
}
|
||
|
}
|
||
|
|
||
|
--- 106,159 ----
|
||
|
continue;
|
||
|
}
|
||
|
nwhich = flwhich(mousep->xy);
|
||
|
! scr = which && (ptinrect(mousep->xy, which->scroll) ||
|
||
|
! mousep->buttons&(8|16));
|
||
|
if(mousep->buttons)
|
||
|
flushtyping(1);
|
||
|
! if((mousep->buttons&1)==0)
|
||
|
chord = 0;
|
||
|
! if(chord && which && which==nwhich){
|
||
|
chord |= mousep->buttons;
|
||
|
! t = (Text *)which->user1;
|
||
|
! if(!t->lock){
|
||
|
! int w = which-t->l;
|
||
|
! if(chord&2){
|
||
|
! cut(t, w, 1, 1);
|
||
|
! chord &= ~2;
|
||
|
! }
|
||
|
! if(chord&4){
|
||
|
! paste(t, w);
|
||
|
! chord &= ~4;
|
||
|
}
|
||
|
}
|
||
|
+ }else if(mousep->buttons&(1|8)){
|
||
|
+ if(scr)
|
||
|
+ scroll(which, (mousep->buttons&8) ? 4 : 1);
|
||
|
+ else if(nwhich && nwhich!=which)
|
||
|
+ current(nwhich);
|
||
|
+ else{
|
||
|
+ t=(Text *)which->user1;
|
||
|
+ if(flselect(which)){
|
||
|
+ outTsl(Tdclick, t->tag, which->p0);
|
||
|
+ t->lock++;
|
||
|
+ }else if(t!=&cmd)
|
||
|
+ outcmd();
|
||
|
+ if(mousep->buttons&1)
|
||
|
+ chord = mousep->buttons;
|
||
|
+ }
|
||
|
}else if((mousep->buttons&2) && which){
|
||
|
if(scr)
|
||
|
scroll(which, 2);
|
||
|
else
|
||
|
menu2hit();
|
||
|
! }else if(mousep->buttons&(4|16)){
|
||
|
if(scr)
|
||
|
! scroll(which, (mousep->buttons&16) ? 5 : 3);
|
||
|
else
|
||
|
menu3hit();
|
||
|
}
|
||
|
mouseunblock();
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|