On 20.12.2015 19:42, Anton Baskanov wrote:
Signed-off-by: Anton Baskanov baskanov@gmail.com
The code in SetCaretPos doesn't change the caret state if it's position is unchanged. Reflect this at the server side to avoid caret corruption.
try2:
- fixed incorrect if statement in the server
dlls/user32/caret.c | 2 +- server/protocol.def | 3 ++- server/queue.c | 5 +++++ 3 files changed, 8 insertions(+), 2 deletions(-)
I assume the "corruption" you mean is that the state could get out of sync between wineserver and child process. However, is there a specific reason (for example testcase) which shows that this is the right way to fix it? A different (and much easier) possibility would be:
- if (ret && !hidden && (x != r.left || y != r.top)) + if (ret && !hidden && (x != r.left || y != r.top || !old_state))
Regards, Sebastian