Added SDL_CleanupEvent()
This is used to free any dynamically allocated memory in events.
This commit is contained in:
parent
c4bf05fd9d
commit
7e445da569
20 changed files with 146 additions and 232 deletions
|
@ -1098,21 +1098,18 @@ int SDL_SendEditingText(const char *text, int start, int length)
|
|||
if (SDL_EventEnabled(SDL_EVENT_TEXT_EDITING)) {
|
||||
SDL_Event event;
|
||||
|
||||
if (SDL_GetHintBoolean(SDL_HINT_IME_SUPPORT_EXTENDED_TEXT, SDL_FALSE) &&
|
||||
SDL_strlen(text) >= SDL_arraysize(event.text.text)) {
|
||||
event.type = SDL_EVENT_TEXT_EDITING_EXT;
|
||||
event.common.timestamp = 0;
|
||||
event.editExt.windowID = keyboard->focus ? keyboard->focus->id : 0;
|
||||
event.editExt.text = text ? SDL_strdup(text) : NULL;
|
||||
event.editExt.start = start;
|
||||
event.editExt.length = length;
|
||||
event.type = SDL_EVENT_TEXT_EDITING;
|
||||
event.common.timestamp = 0;
|
||||
event.edit.windowID = keyboard->focus ? keyboard->focus->id : 0;
|
||||
event.edit.start = start;
|
||||
event.edit.length = length;
|
||||
|
||||
size_t len = SDL_strlen(text);
|
||||
if (len < sizeof(event.edit.short_text)) {
|
||||
SDL_memcpy(event.edit.short_text, text, len + 1);
|
||||
event.edit.text = event.edit.short_text;
|
||||
} else {
|
||||
event.type = SDL_EVENT_TEXT_EDITING;
|
||||
event.common.timestamp = 0;
|
||||
event.edit.windowID = keyboard->focus ? keyboard->focus->id : 0;
|
||||
event.edit.start = start;
|
||||
event.edit.length = length;
|
||||
SDL_utf8strlcpy(event.edit.text, text, SDL_arraysize(event.edit.text));
|
||||
event.edit.text = SDL_strdup(text);
|
||||
}
|
||||
|
||||
posted = (SDL_PushEvent(&event) > 0);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue