Skip to content

Commit

Permalink
IO: AddInputCharacters function ignore 0 input. (#3252)
Browse files Browse the repository at this point in the history
  • Loading branch information
ocornut committed May 20, 2020
1 parent f44962c commit c8cde28
Showing 1 changed file with 7 additions and 3 deletions.
10 changes: 7 additions & 3 deletions imgui.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1142,17 +1142,21 @@ ImGuiIO::ImGuiIO()
// - on Windows you can get those using ToAscii+keyboard state, or via the WM_CHAR message
void ImGuiIO::AddInputCharacter(unsigned int c)
{
InputQueueCharacters.push_back(c > 0 && c <= IM_UNICODE_CODEPOINT_MAX ? (ImWchar)c : IM_UNICODE_CODEPOINT_INVALID);
if (c != 0)
InputQueueCharacters.push_back(c <= IM_UNICODE_CODEPOINT_MAX ? (ImWchar)c : IM_UNICODE_CODEPOINT_INVALID);
}

// UTF16 strings use surrogate pairs to encode codepoints >= 0x10000, so
// we should save the high surrogate.
void ImGuiIO::AddInputCharacterUTF16(ImWchar16 c)
{
if (c == 0 && InputQueueSurrogate == 0)
return;

if ((c & 0xFC00) == 0xD800) // High surrogate, must save
{
if (InputQueueSurrogate != 0)
InputQueueCharacters.push_back(0xFFFD);
InputQueueCharacters.push_back(IM_UNICODE_CODEPOINT_INVALID);
InputQueueSurrogate = c;
return;
}
Expand All @@ -1177,7 +1181,7 @@ void ImGuiIO::AddInputCharactersUTF8(const char* utf8_chars)
{
unsigned int c = 0;
utf8_chars += ImTextCharFromUtf8(&c, utf8_chars, NULL);
if (c > 0)
if (c != 0)
InputQueueCharacters.push_back((ImWchar)c);
}
}
Expand Down

0 comments on commit c8cde28

Please sign in to comment.