...
|
...
|
@@ -699,6 +699,44 @@ fprintf(stderr,"re_processkey(): received Control+'-'\n");
|
699
|
699
|
fprintf(stderr,"re_processkey(): received Control+'0'\n");
|
700
|
700
|
re_changefontsize(re, 0);
|
701
|
701
|
re->ignorenkeys++;
|
|
702
|
+ } else if((event->key.keysym.sym==SDLK_c || event->key.keysym.sym==SDLK_x) && (SDL_GetModState()&KMOD_CTRL)!=0) {
|
|
703
|
+ long frompos,topos,coldone;
|
|
704
|
+ int is_cut=(event->key.keysym.sym==SDLK_x)?1:0;
|
|
705
|
+fprintf(stderr,"re_processkey(): received Control+%c\n",is_cut?'x':'c');
|
|
706
|
+ /* CUA92-style copy (ctrl+c) / cut (ctrl+x) */
|
|
707
|
+ if(re->selactive
|
|
708
|
+ && redata_linecol2pos(re->data,re->sellinefrom,re->selcolfrom,&frompos,NULL)==0
|
|
709
|
+ && redata_linecol2pos(re->data,re->sellineto,re->selcolto,&topos,&coldone)==0) {
|
|
710
|
+ re_selectbuf_fill(re,frompos,topos-frompos,re->selcolto-coldone);
|
|
711
|
+ if(is_cut) {
|
|
712
|
+ redata_undo_groupinit(re->data,NULL);
|
|
713
|
+ redata_op_del(re->data,frompos,topos-frompos,NULL);
|
|
714
|
+ redata_undo_groupcommit(re->data,NULL);
|
|
715
|
+ re->cursorpos=frompos;
|
|
716
|
+ redata_pos2linecol(re->data,re->cursorpos,&(re->curline),&(re->curcol));
|
|
717
|
+ re_fixorigin(re);
|
|
718
|
+ re->headerdirty=1;
|
|
719
|
+ }
|
|
720
|
+ re_sel_toggle(re);
|
|
721
|
+ re->contentsdirty=1;
|
|
722
|
+ }
|
|
723
|
+ re->ignorenkeys++;
|
|
724
|
+ } else if(event->key.keysym.sym==SDLK_v && (SDL_GetModState()&KMOD_CTRL)!=0) {
|
|
725
|
+fprintf(stderr,"re_processkey(): received Control+v\n");
|
|
726
|
+ /* CUA92-style paste (ctrl+v)*/
|
|
727
|
+ if(re->selactive)
|
|
728
|
+ re_sel_toggle(re);
|
|
729
|
+ if(re->usedselectbuf>0) {
|
|
730
|
+ redata_undo_groupinit(re->data,NULL);
|
|
731
|
+ redata_op_add(re->data,re->cursorpos,re->selectbuf,re->usedselectbuf,NULL);
|
|
732
|
+ redata_undo_groupcommit(re->data,NULL);
|
|
733
|
+ re->cursorpos+=re->usedselectbuf;
|
|
734
|
+ redata_pos2linecol(re->data,re->cursorpos,&(re->curline),&(re->curcol));
|
|
735
|
+ re_fixorigin(re);
|
|
736
|
+ re->headerdirty=1;
|
|
737
|
+ re->contentsdirty=1;
|
|
738
|
+ }
|
|
739
|
+ re->ignorenkeys++;
|
702
|
740
|
}
|
703
|
741
|
return(0);
|
704
|
742
|
}
|