From c78f02d9908773ec29d10b31c9401bb17eb5eacb Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Wed, 7 Mar 2012 16:24:25 +0000 Subject: edit to cursor adjustment, use int rather then short to store the cursor position. --- source/blender/blenkernel/intern/text.c | 4 ++-- source/blender/blenlib/BLI_string_cursor_utf8.h | 17 +++-------------- source/blender/blenlib/intern/string_cursor_utf8.c | 16 +++++++++++++--- source/blender/editors/interface/interface_handlers.c | 18 +++++++++++------- source/blender/editors/space_console/console_ops.c | 4 ++-- 5 files changed, 31 insertions(+), 28 deletions(-) (limited to 'source') diff --git a/source/blender/blenkernel/intern/text.c b/source/blender/blenkernel/intern/text.c index 61c69d94d26..6cd900c9ed2 100644 --- a/source/blender/blenkernel/intern/text.c +++ b/source/blender/blenkernel/intern/text.c @@ -955,7 +955,7 @@ void txt_jump_left(Text *text, short sel) TextLine **linep, *oldl; int *charp, oldc, oldflags, i; unsigned char oldu; - short pos; + int pos; if (!text) return; if(sel) txt_curs_sel(text, &linep, &charp); @@ -989,7 +989,7 @@ void txt_jump_right(Text *text, short sel) TextLine **linep, *oldl; int *charp, oldc, oldflags, i; unsigned char oldu; - short pos; + int pos; if (!text) return; if(sel) txt_curs_sel(text, &linep, &charp); diff --git a/source/blender/blenlib/BLI_string_cursor_utf8.h b/source/blender/blenlib/BLI_string_cursor_utf8.h index 4bdc7f612c6..11c91aac6ac 100644 --- a/source/blender/blenlib/BLI_string_cursor_utf8.h +++ b/source/blender/blenlib/BLI_string_cursor_utf8.h @@ -30,17 +30,6 @@ * \ingroup bli */ -typedef enum strCursorDelimType { - STRCUR_DELIM_NONE, - STRCUR_DELIM_ALPHA, - STRCUR_DELIM_PUNCT, - STRCUR_DELIM_BRACE, - STRCUR_DELIM_OPERATOR, - STRCUR_DELIM_QUOTE, - STRCUR_DELIM_WHITESPACE, - STRCUR_DELIM_OTHER -} strCursorDelimType; - typedef enum strCursorJumpType { STRCUR_JUMP_NONE, STRCUR_JUMP_DELIM, @@ -52,11 +41,11 @@ typedef enum strCursorJumpDirection { STRCUR_DIR_NEXT } strCursorJumpDirection; -int BLI_str_cursor_step_next_utf8(const char *str, size_t maxlen, short *pos); -int BLI_str_cursor_step_prev_utf8(const char *str, size_t maxlen, short *pos); +int BLI_str_cursor_step_next_utf8(const char *str, size_t maxlen, int *pos); +int BLI_str_cursor_step_prev_utf8(const char *str, size_t maxlen, int *pos); void BLI_str_cursor_step_utf8(const char *str, size_t maxlen, - short *pos, strCursorJumpDirection direction, + int *pos, strCursorJumpDirection direction, strCursorJumpType jump); #endif /* __BLI_STRING_CURSOR_UTF8_H__ */ diff --git a/source/blender/blenlib/intern/string_cursor_utf8.c b/source/blender/blenlib/intern/string_cursor_utf8.c index 6dc88ec00a4..7fdeaf35514 100644 --- a/source/blender/blenlib/intern/string_cursor_utf8.c +++ b/source/blender/blenlib/intern/string_cursor_utf8.c @@ -36,6 +36,16 @@ #include "BLI_string_cursor_utf8.h" /* own include */ +typedef enum strCursorDelimType { + STRCUR_DELIM_NONE, + STRCUR_DELIM_ALPHA, + STRCUR_DELIM_PUNCT, + STRCUR_DELIM_BRACE, + STRCUR_DELIM_OPERATOR, + STRCUR_DELIM_QUOTE, + STRCUR_DELIM_WHITESPACE, + STRCUR_DELIM_OTHER +} strCursorDelimType; /* return 1 if char ch is special character, otherwise return 0 */ static strCursorDelimType test_special_char(const char ch) @@ -100,7 +110,7 @@ static strCursorDelimType test_special_char(const char ch) return STRCUR_DELIM_NONE; } -int BLI_str_cursor_step_next_utf8(const char *str, size_t maxlen, short *pos) +int BLI_str_cursor_step_next_utf8(const char *str, size_t maxlen, int *pos) { const char *str_end= str + (maxlen + 1); const char *str_pos= str + (*pos); @@ -114,7 +124,7 @@ int BLI_str_cursor_step_next_utf8(const char *str, size_t maxlen, short *pos) return FALSE; } -int BLI_str_cursor_step_prev_utf8(const char *str, size_t UNUSED(maxlen), short *pos) +int BLI_str_cursor_step_prev_utf8(const char *str, size_t UNUSED(maxlen), int *pos) { if((*pos) > 0) { const char *str_pos= str + (*pos); @@ -129,7 +139,7 @@ int BLI_str_cursor_step_prev_utf8(const char *str, size_t UNUSED(maxlen), short } void BLI_str_cursor_step_utf8(const char *str, size_t maxlen, - short *pos, strCursorJumpDirection direction, + int *pos, strCursorJumpDirection direction, strCursorJumpType jump) { const short pos_prev= *pos; diff --git a/source/blender/editors/interface/interface_handlers.c b/source/blender/editors/interface/interface_handlers.c index 8504677ce56..b7c250743a9 100644 --- a/source/blender/editors/interface/interface_handlers.c +++ b/source/blender/editors/interface/interface_handlers.c @@ -1265,7 +1265,7 @@ static void ui_textedit_set_cursor_pos(uiBut *but, uiHandleButtonData *data, sho /* mouse dragged outside the widget to the left */ if (x < startx && but->ofs > 0) { - short i= but->ofs; + int i = but->ofs; origstr[but->ofs] = 0; @@ -1288,9 +1288,11 @@ static void ui_textedit_set_cursor_pos(uiBut *but, uiHandleButtonData *data, sho /* XXX does not take zoom level into account */ while (startx + aspect_sqrt * BLF_width(fstyle->uifont_id, origstr+but->ofs) > x) { + int pos_i = but->pos; if (but->pos <= 0) break; - if (BLI_str_cursor_step_prev_utf8(origstr, but->ofs, &but->pos)) { - origstr[but->pos+but->ofs] = 0; + if (BLI_str_cursor_step_prev_utf8(origstr, but->ofs, &pos_i)) { + but->pos = pos_i; + origstr[but->pos + but->ofs] = 0; } else { break; /* unlikely but possible */ @@ -1391,7 +1393,9 @@ static void ui_textedit_move(uiBut *but, uiHandleButtonData *data, strCursorJump data->selextend = 0; } else { - BLI_str_cursor_step_utf8(str, len, &but->pos, direction, jump); + int pos_i = but->pos; + BLI_str_cursor_step_utf8(str, len, &pos_i, direction, jump); + but->pos = pos_i; if(select) { /* existing selection */ @@ -1457,10 +1461,10 @@ static int ui_textedit_delete(uiBut *but, uiHandleButtonData *data, int directio changed= ui_textedit_delete_selection(but, data); } else if (but->pos>=0 && but->pospos; + int pos = but->pos; int step; BLI_str_cursor_step_utf8(str, len, &pos, direction, jump); - step= pos - but->pos; + step = pos - but->pos; memmove(&str[but->pos], &str[but->pos + step], (len + 1) - but->pos); changed= 1; } @@ -1471,7 +1475,7 @@ static int ui_textedit_delete(uiBut *but, uiHandleButtonData *data, int directio changed= ui_textedit_delete_selection(but, data); } else if(but->pos>0) { - short pos= but->pos; + int pos = but->pos; int step; BLI_str_cursor_step_utf8(str, len, &pos, direction, jump); diff --git a/source/blender/editors/space_console/console_ops.c b/source/blender/editors/space_console/console_ops.c index ab1cada8f0c..b52bc75eac8 100644 --- a/source/blender/editors/space_console/console_ops.c +++ b/source/blender/editors/space_console/console_ops.c @@ -276,9 +276,9 @@ static int console_move_exec(bContext *C, wmOperator *op) int type= RNA_enum_get(op->ptr, "type"); int done= 0; - short pos; + int pos; - switch(type) { + switch (type) { case LINE_BEGIN: pos = ci->cursor; BLI_str_cursor_step_utf8(ci->line, ci->len, -- cgit v1.2.3