nixpkgs/pkgs/tools/system/plan9port/sam_chord_9front.patch
2016-08-31 08:58:45 +03:00

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();
}
}
}