...
|
...
|
@@ -785,6 +785,7 @@ fprintf(stderr,"SDL_KEYDOWN: sym:%i\n",event->key.keysym.sym);
|
785
|
785
|
} else if(event->key.keysym.sym==SDLK_HOME || event->key.keysym.sym==SDLK_END) {
|
786
|
786
|
long newpos;
|
787
|
787
|
long cursorpos;
|
|
788
|
+ int oldcol=re->curcol,oldline=re->curline;
|
788
|
789
|
if(redata_linecol2pos(re->data,re->curline,re->curcol,&cursorpos,NULL)!=0)
|
789
|
790
|
return(0); /* error obtaining position */
|
790
|
791
|
if((event->key.keysym.sym==SDLK_HOME && redata_line_realstart(re->data,cursorpos,&newpos)==-1)
|
...
|
...
|
@@ -794,6 +795,9 @@ fprintf(stderr,"SDL_KEYDOWN: sym:%i\n",event->key.keysym.sym);
|
794
|
795
|
cursorpos=newpos;
|
795
|
796
|
if(redata_pos2linecol(re->data,cursorpos,NULL,&(re->curcol))==-1)
|
796
|
797
|
return(-1); /* couldn't get col of current pos */;
|
|
798
|
+ if((SDL_GetModState()&KMOD_SHIFT)!=0 && (re->curcol!=oldcol || re->curline!=oldline)) {
|
|
799
|
+ re_sel_resize(re,oldcol,oldline,(event->key.keysym.sym==SDLK_HOME)?-1:1);
|
|
800
|
+ }
|
797
|
801
|
re_fixorigin(re);
|
798
|
802
|
re->headerdirty=1;
|
799
|
803
|
re->contentsdirty=1;
|