diff options
-rw-r--r-- | misc_gui.c | 3 | ||||
-rw-r--r-- | window.h | 6 |
2 files changed, 5 insertions, 4 deletions
diff --git a/misc_gui.c b/misc_gui.c index 1bca0f997..94917cfdf 100644 --- a/misc_gui.c +++ b/misc_gui.c @@ -942,12 +942,13 @@ void UpdateTextBufferSize(Textbuf *tb) WChar c = Utf8Consume(&buf); tb->width = 0; + tb->length = 0; for (; c != '\0' && tb->length < (tb->maxlength - 1); c = Utf8Consume(&buf)) { tb->width += GetCharacterWidth(FS_NORMAL, c); + tb->length += Utf8CharLen(c); } - tb->length = buf - tb->buf - 1; tb->caretpos = tb->length; tb->caretxoffs = tb->width; } @@ -284,10 +284,10 @@ enum WindowDefaultPosition { typedef struct Textbuf { char *buf; /* buffer in which text is saved */ - uint16 maxlength, maxwidth; /* the maximum size of the buffer. Maxwidth specifies screensize in pixels */ - uint16 length, width; /* the current size of the string. Width specifies screensize in pixels */ + uint16 maxlength, maxwidth; /* the maximum size of the buffer. Maxwidth specifies screensize in pixels, maxlength is in bytes */ + uint16 length, width; /* the current size of the string. Width specifies screensize in pixels, length is in bytes */ bool caret; /* is the caret ("_") visible or not */ - uint16 caretpos; /* the current position of the caret in the buffer */ + uint16 caretpos; /* the current position of the caret in the buffer, in bytes */ uint16 caretxoffs; /* the current position of the caret in pixels */ } Textbuf; |