Aric Stewart : ime: Do not send WM_IME_ENDCOMPOSITION on CPS_COMPLETE if there is no composition.
Alexandre Julliard
julliard at winehq.org
Wed Dec 14 16:45:28 CST 2016
Module: wine
Branch: master
Commit: 333c5bd9dd314b1ce68a1518e85ceb80a3e9abd3
URL: http://source.winehq.org/git/wine.git/?a=commit;h=333c5bd9dd314b1ce68a1518e85ceb80a3e9abd3
Author: Aric Stewart <aric at 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 at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at 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);
More information about the wine-cvs
mailing list