Revision: 40890
          
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=40890
Author:   campbellbarton
Date:     2011-10-10 01:11:40 +0000 (Mon, 10 Oct 2011)
Log Message:
-----------
bug #28848 also mentions Ctrl+Backspace isnt working.
added support for ctrl+backspace/delete.

Modified Paths:
--------------
    trunk/blender/source/blender/editors/interface/interface_handlers.c

Modified: trunk/blender/source/blender/editors/interface/interface_handlers.c
===================================================================
--- trunk/blender/source/blender/editors/interface/interface_handlers.c 
2011-10-10 00:38:32 UTC (rev 40889)
+++ trunk/blender/source/blender/editors/interface/interface_handlers.c 
2011-10-10 01:11:40 UTC (rev 40890)
@@ -1481,13 +1481,12 @@
        }
 }
 
-static int ui_textedit_delete(uiBut *but, uiHandleButtonData *data, int 
direction, int all)
+static int ui_textedit_delete(uiBut *but, uiHandleButtonData *data, int 
direction, const int all, const int jump)
 {
-       char *str;
-       int len, x, changed= 0;
+       char *str= data->str;
+       const int len= strlen(str);
 
-       str= data->str;
-       len= strlen(str);
+       int x, changed= 0;
 
        if(all) {
                if(len) changed=1;
@@ -1499,9 +1498,24 @@
                        changed= ui_textedit_delete_selection(but, data);
                }
                else if(but->pos>=0 && but->pos<len) {
+                       int step;
+
+                       if (jump) {
+                               x = but->pos;
+                               step= 0;
+                               while(x < len) {
+                                       x++;
+                                       step++;
+                                       if(test_special_char(str[x])) break;
+                               }
+                       }
+                       else {
+                               step= 1;
+                       }
+
                        for(x=but->pos; x<len; x++)
-                               str[x]= str[x+1];
-                       str[len-1]='\0';
+                               str[x]= str[x+step];
+                       str[len-step]='\0';
                        changed= 1;
                }
        }
@@ -1511,11 +1525,26 @@
                                changed= ui_textedit_delete_selection(but, 
data);
                        }
                        else if(but->pos>0) {
+                               int step;
+
+                               if (jump) {
+                                       x = but->pos;
+                                       step= 0;
+                                       while(x > 0) {
+                                               x--;
+                                               step++;
+                                               if((step > 1) && 
test_special_char(str[x])) break;
+                                       }
+                               }
+                               else {
+                                       step= 1;
+                               }
+
                                for(x=but->pos; x<len; x++)
-                                       str[x-1]= str[x];
-                               str[len-1]='\0';
+                                       str[x-step]= str[x];
+                               str[len-step]='\0';
 
-                               but->pos--;
+                               but->pos -= step;
                                changed= 1;
                        }
                } 
@@ -1846,12 +1875,12 @@
                                retval= WM_UI_HANDLER_BREAK;
                                break;
                        case DELKEY:
-                               changed= ui_textedit_delete(but, data, 1, 0);
+                               changed= ui_textedit_delete(but, data, 1, 0, 
event->ctrl);
                                retval= WM_UI_HANDLER_BREAK;
                                break;
 
                        case BACKSPACEKEY:
-                               changed= ui_textedit_delete(but, data, 0, 
event->shift);
+                               changed= ui_textedit_delete(but, data, 0, 
event->shift, event->ctrl);
                                retval= WM_UI_HANDLER_BREAK;
                                break;
                                

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to