Fixed: Whitespace being striped from the end of IME strings incorrectly + Regression with SDL_SetTextInputRect (#4752)

* Fixed: Whitespace being striped from the end of IME strings incorrectly

* Fixed: Google IME Candidate Window not placing correctly

* Why are PostBuild events stored in the vcxproj and not a user file?

* Revert SDL.vcxproj properly...

* Remove whitespace as per code review

* Fix Werror=declaration-after-statement error in code
This commit is contained in:
Zach Reedy 2021-09-15 12:40:22 -04:00 committed by GitHub
parent 333ea51cac
commit 2a8938f2bf
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 18 additions and 8 deletions

View File

@ -246,13 +246,20 @@ WIN_SetTextInputRect(_THIS, SDL_Rect *rect)
himc = ImmGetContext(videodata->ime_hwnd_current);
if (himc)
{
CANDIDATEFORM cf;
cf.dwIndex = 0;
cf.dwStyle = CFS_POINT;
cf.ptCurrentPos.x = videodata->ime_rect.x;
cf.ptCurrentPos.y = videodata->ime_rect.y;
ImmSetCandidateWindow(himc, &cf);
COMPOSITIONFORM cof;
CANDIDATEFORM caf;
cof.dwStyle = CFS_FORCE_POSITION;
cof.ptCurrentPos.x = videodata->ime_rect.x;
cof.ptCurrentPos.y = videodata->ime_rect.y;
ImmSetCompositionWindow(himc, &cof);
caf.dwIndex = 0;
caf.dwStyle = CFS_CANDIDATEPOS;
caf.ptCurrentPos.x = videodata->ime_rect.x;
caf.ptCurrentPos.y = videodata->ime_rect.y;
ImmSetCandidateWindow(himc, &caf);
ImmReleaseContext(videodata->ime_hwnd_current, himc);
}
}
@ -748,13 +755,16 @@ IME_GetCompositionString(SDL_VideoData *videodata, HIMC himc, DWORD string)
length /= sizeof(videodata->ime_composition[0]);
videodata->ime_cursor = LOWORD(ImmGetCompositionStringW(himc, GCS_CURSORPOS, 0, 0));
if (videodata->ime_cursor < SDL_arraysize(videodata->ime_composition) && videodata->ime_composition[videodata->ime_cursor] == 0x3000) {
if (videodata->ime_cursor > 0 &&
videodata->ime_cursor < SDL_arraysize(videodata->ime_composition) &&
videodata->ime_composition[videodata->ime_cursor] == 0x3000) {
int i;
for (i = videodata->ime_cursor + 1; i < length; ++i)
videodata->ime_composition[i - 1] = videodata->ime_composition[i];
--length;
}
videodata->ime_composition[length] = 0;
}