Module: wine Branch: master Commit: 333c5bd9dd314b1ce68a1518e85ceb80a3e9abd3 URL: http://source.winehq.org/git/wine.git/?a=commit;h=333c5bd9dd314b1ce68a1518e8...
Author: Aric Stewart aric@codeweavers.com Date: Wed Dec 14 12:30:23 2016 -0600
ime: Do not send WM_IME_ENDCOMPOSITION on CPS_COMPLETE if there is no composition.
Signed-off-by: Aric Stewart aric@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/winemac.drv/ime.c | 7 +++++-- dlls/winex11.drv/ime.c | 8 +++++--- 2 files changed, 10 insertions(+), 5 deletions(-)
diff --git a/dlls/winemac.drv/ime.c b/dlls/winemac.drv/ime.c index 7681e8e..846f9bd 100644 --- a/dlls/winemac.drv/ime.c +++ b/dlls/winemac.drv/ime.c @@ -839,6 +839,7 @@ BOOL WINAPI NotifyIME(HIMC hIMC, DWORD dwAction, DWORD dwIndex, DWORD dwValue) cpstr = (LPWSTR)&cdata[cs->dwCompStrOffset]; ImmUnlockIMCC(lpIMC->hCompStr); } + myPrivate = ImmLockIMCC(lpIMC->hPrivate); if (cplen > 0) { WCHAR param = cpstr[0]; @@ -855,11 +856,13 @@ BOOL WINAPI NotifyIME(HIMC hIMC, DWORD dwAction, DWORD dwIndex, DWORD dwValue)
GenerateIMEMessage(hIMC, WM_IME_COMPOSITION, param, GCS_RESULTSTR | GCS_RESULTCLAUSE); + + GenerateIMEMessage(hIMC, WM_IME_ENDCOMPOSITION, 0, 0); } + else if (myPrivate->bInComposition) + GenerateIMEMessage(hIMC, WM_IME_ENDCOMPOSITION, 0, 0);
- GenerateIMEMessage(hIMC, WM_IME_ENDCOMPOSITION, 0, 0);
- myPrivate = ImmLockIMCC(lpIMC->hPrivate); myPrivate->bInComposition = FALSE; ImmUnlockIMCC(lpIMC->hPrivate);
diff --git a/dlls/winex11.drv/ime.c b/dlls/winex11.drv/ime.c index 06576dd..0f4d2b2 100644 --- a/dlls/winex11.drv/ime.c +++ b/dlls/winex11.drv/ime.c @@ -763,6 +763,7 @@ BOOL WINAPI NotifyIME(HIMC hIMC, DWORD dwAction, DWORD dwIndex, DWORD dwValue) cpstr = (LPWSTR)&(cdata[cs->dwCompStrOffset]); ImmUnlockIMCC(lpIMC->hCompStr); } + myPrivate = ImmLockIMCC(lpIMC->hPrivate); if (cplen > 0) { WCHAR param = cpstr[0]; @@ -779,11 +780,12 @@ BOOL WINAPI NotifyIME(HIMC hIMC, DWORD dwAction, DWORD dwIndex, DWORD dwValue)
GenerateIMEMessage(hIMC, WM_IME_COMPOSITION, param, GCS_RESULTSTR|GCS_RESULTCLAUSE); - }
- GenerateIMEMessage(hIMC,WM_IME_ENDCOMPOSITION, 0, 0); + GenerateIMEMessage(hIMC,WM_IME_ENDCOMPOSITION, 0, 0); + } + else if (myPrivate->bInComposition) + GenerateIMEMessage(hIMC,WM_IME_ENDCOMPOSITION, 0, 0);
- myPrivate = ImmLockIMCC(lpIMC->hPrivate); myPrivate->bInComposition = FALSE; ImmUnlockIMCC(lpIMC->hPrivate);