From e50a4858367cbd51be7e4ed0f4f6e9756bf684d9 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sun, 9 Oct 2011 00:54:41 +0000 Subject: text editing: make jumping left/right both act the same way (was skipping an extra char when jumping left). --- source/blender/editors/interface/interface_handlers.c | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/source/blender/editors/interface/interface_handlers.c b/source/blender/editors/interface/interface_handlers.c index f18370fdb46..8855bbd8e64 100644 --- a/source/blender/editors/interface/interface_handlers.c +++ b/source/blender/editors/interface/interface_handlers.c @@ -1393,7 +1393,7 @@ static void ui_textedit_move(uiBut *but, uiHandleButtonData *data, int direction else { if(direction) { /* right*/ if(jump) { - /* jump betweenn special characters (/,\,_,-, etc.), + /* jump between special characters (/,\,_,-, etc.), * look at function test_special_char() for complete * list of special character, ctr -> */ while(but->pos < len) { @@ -1408,13 +1408,25 @@ static void ui_textedit_move(uiBut *but, uiHandleButtonData *data, int direction } else { /* left */ if(jump) { - /* jump betweenn special characters (/,\,_,-, etc.), + + /* left only: compensate for index/change in direction */ + if(but->pos > 0) { + but->pos--; + } + + /* jump between special characters (/,\,_,-, etc.), * look at function test_special_char() for complete * list of special character, ctr -> */ while(but->pos > 0){ but->pos--; if(!jump_all && test_special_char(str[but->pos])) break; } + + /* left only: compensate for index/change in direction */ + if((but->pos != 0) && ABS(pos_prev - but->pos) > 1) { + but->pos++; + } + } else { if(but->pos>0) but->pos--; -- cgit v1.2.3