Browse code

Make Shift+HOME/Shift+END change the selection accordingly

Dario Rodriguez authored on 25/04/2021 10:02:40
Showing 1 changed files
... ...
@@ -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;