|
@@ -2319,9 +2319,11 @@ bool GuiTextBoxMulti(Rectangle bounds, char *text, int textSize, bool editMode)
|
|
// We get an Unicode codepoint
|
|
// We get an Unicode codepoint
|
|
int codepoint = GetCharPressed();
|
|
int codepoint = GetCharPressed();
|
|
int textLength = (int)strlen(text); // Length in bytes (UTF-8 string)
|
|
int textLength = (int)strlen(text); // Length in bytes (UTF-8 string)
|
|
|
|
+ int byteSize = 0;
|
|
|
|
+ const char *textUTF8 = CodepointToUTF8(key, &byteSize)
|
|
|
|
|
|
// Introduce characters
|
|
// Introduce characters
|
|
- if (textLength < (textSize - 1))
|
|
|
|
|
|
+ if ((textLength + byteSize) < textSize)
|
|
{
|
|
{
|
|
if (IsKeyPressed(KEY_ENTER))
|
|
if (IsKeyPressed(KEY_ENTER))
|
|
{
|
|
{
|
|
@@ -2353,7 +2355,7 @@ bool GuiTextBoxMulti(Rectangle bounds, char *text, int textSize, bool editMode)
|
|
{
|
|
{
|
|
// Remove latest UTF-8 unicode character introduced (n bytes)
|
|
// Remove latest UTF-8 unicode character introduced (n bytes)
|
|
int charUTF8Length = 0;
|
|
int charUTF8Length = 0;
|
|
- while (((unsigned char)text[textLength - 1 - charUTF8Length] & 0b01000000) == 0) charUTF8Length++;
|
|
|
|
|
|
+ while (charUTF8Length < textLength && ((unsigned char)text[textLength - 1 - charUTF8Length] & 0b01000000) == 0) charUTF8Length++;
|
|
|
|
|
|
textLength -= (charUTF8Length + 1);
|
|
textLength -= (charUTF8Length + 1);
|
|
text[textLength] = '\0';
|
|
text[textLength] = '\0';
|