Revision: 40863
          
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=40863
Author:   campbellbarton
Date:     2011-10-09 00:45:26 +0000 (Sun, 09 Oct 2011)
Log Message:
-----------
button text editing: home/end were not moving the cursor position, only the 
selecton.

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-09 00:35:31 UTC (rev 40862)
+++ trunk/blender/source/blender/editors/interface/interface_handlers.c 
2011-10-09 00:45:26 UTC (rev 40863)
@@ -1368,7 +1368,7 @@
        return changed;
 }
 
-static void ui_textedit_move(uiBut *but, uiHandleButtonData *data, int 
direction, int select, int jump)
+static void ui_textedit_move(uiBut *but, uiHandleButtonData *data, int 
direction, int select, int jump, int jump_all)
 {
        const char *str= data->str;
        const int len= strlen(str);
@@ -1377,11 +1377,16 @@
 
        /* special case, quit selection and set cursor */
        if (has_sel && !select) {
-               if (direction) {
-                       but->selsta = but->pos = but->selend;
+               if (jump_all) {
+                       but->selsta = but->selend= but->pos = direction ? len : 
0;
                }
                else {
-                       but->pos = but->selend = but->selsta;
+                       if (direction) {
+                               but->selsta = but->pos = but->selend;
+                       }
+                       else {
+                               but->pos = but->selend = but->selsta;
+                       }
                }
                data->selextend = 0;
        }
@@ -1393,7 +1398,7 @@
                                 * list of special character, ctr -> */
                                while(but->pos < len) {
                                        but->pos++;
-                                       if(test_special_char(str[but->pos])) 
break;
+                                       if(!jump_all && 
test_special_char(str[but->pos])) break;
                                }
                        }
                        else {
@@ -1408,7 +1413,7 @@
                                 * list of special character, ctr -> */
                                while(but->pos > 0){
                                        but->pos--;
-                                       if(test_special_char(str[but->pos])) 
break;
+                                       if(!jump_all && 
test_special_char(str[but->pos])) break;
                                }
                        }
                        else {
@@ -1464,30 +1469,6 @@
        }
 }
 
-static void ui_textedit_move_end(uiBut *but, uiHandleButtonData *data, int 
direction, int select)
-{
-       const char *str= data->str;
-
-       if(direction) { /* right */
-               if(select) {
-                       but->selsta = but->pos;
-                       but->selend = strlen(str);
-                       data->selextend = EXTEND_RIGHT;
-               } else {
-                       but->selsta = but->selend = but->pos= strlen(str);
-               }
-       }
-       else { /* left */
-               if(select) {
-                       but->selend = but->pos;
-                       but->selsta = 0;
-                       data->selextend = EXTEND_LEFT;
-               } else {
-                       but->selsta = but->selend = but->pos= 0;
-               }
-       }
-}
-
 static int ui_textedit_delete(uiBut *but, uiHandleButtonData *data, int 
direction, int all)
 {
        char *str;
@@ -1820,11 +1801,11 @@
                                }
                                break;
                        case RIGHTARROWKEY:
-                               ui_textedit_move(but, data, 1, event->shift, 
event->ctrl);
+                               ui_textedit_move(but, data, 1, event->shift, 
event->ctrl, FALSE);
                                retval= WM_UI_HANDLER_BREAK;
                                break;
                        case LEFTARROWKEY:
-                               ui_textedit_move(but, data, 0, event->shift, 
event->ctrl);
+                               ui_textedit_move(but, data, 0, event->shift, 
event->ctrl, FALSE);
                                retval= WM_UI_HANDLER_BREAK;
                                break;
                        case DOWNARROWKEY:
@@ -1834,7 +1815,7 @@
                                }
                                /* pass on purposedly */
                        case ENDKEY:
-                               ui_textedit_move_end(but, data, 1, 
event->shift);
+                               ui_textedit_move(but, data, 1, event->shift, 
TRUE, TRUE);
                                retval= WM_UI_HANDLER_BREAK;
                                break;
                        case UPARROWKEY:
@@ -1844,7 +1825,7 @@
                                }
                                /* pass on purposedly */
                        case HOMEKEY:
-                               ui_textedit_move_end(but, data, 0, 
event->shift);
+                               ui_textedit_move(but, data, 0, event->shift, 
TRUE, TRUE);
                                retval= WM_UI_HANDLER_BREAK;
                                break;
                        case PADENTER:

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

Reply via email to