...
|
...
|
@@ -610,10 +610,23 @@ fprintf(stderr,"SDL_KEYDOWN: sym:%i\n",event->key.keysym.sym);
|
610
|
610
|
re->headerdirty=1;
|
611
|
611
|
re->contentsdirty=1;
|
612
|
612
|
} else if(event->key.keysym.sym==SDLK_DOWN || event->key.keysym.sym==SDLK_UP) {
|
|
613
|
+ int move_res;
|
613
|
614
|
int oldcol=re->curcol,oldline=re->curline;
|
614
|
|
- if(re_moveupdown(re,(event->key.keysym.sym==SDLK_UP)?-1:1)==0 && (SDL_GetModState()&KMOD_SHIFT)!=0 && (re->curcol!=oldcol || re->curline!=oldline)) {
|
|
615
|
+ if((SDL_GetModState()&KMOD_CTRL)!=0 && event->key.keysym.sym==SDLK_UP && re->originline==0)
|
|
616
|
+ return(0); /* nothing to do, already at top */
|
|
617
|
+ move_res=re_moveupdown(re,(event->key.keysym.sym==SDLK_UP)?-1:1);
|
|
618
|
+ if(move_res==0 && (SDL_GetModState()&KMOD_SHIFT)!=0 && (re->curcol!=oldcol || re->curline!=oldline)) {
|
615
|
619
|
re_sel_resize(re,oldcol,oldline,(event->key.keysym.sym==SDLK_UP)?-1:1);
|
616
|
620
|
}
|
|
621
|
+ if(move_res==0 && (SDL_GetModState()&KMOD_CTRL)!=0) {
|
|
622
|
+ if(event->key.keysym.sym==SDLK_UP && re->originline>0) {
|
|
623
|
+ re->originline--;
|
|
624
|
+ re->contentsdirty=1;
|
|
625
|
+ } else if(event->key.keysym.sym==SDLK_DOWN && re->originline<re->curline) {
|
|
626
|
+ re->originline++;
|
|
627
|
+ re->contentsdirty=1;
|
|
628
|
+ }
|
|
629
|
+ }
|
617
|
630
|
} else if(event->key.keysym.sym==SDLK_LEFT || event->key.keysym.sym==SDLK_RIGHT) {
|
618
|
631
|
int oldcol=re->curcol,oldline=re->curline;
|
619
|
632
|
if(re_moveleftright(re,(event->key.keysym.sym==SDLK_LEFT)?-1:1)==0 && (SDL_GetModState()&KMOD_SHIFT)!=0 && (re->curcol!=oldcol || re->curline!=oldline)) {
|