user32: Set correct caret state in the server in SetCaretPos (try 2)
Sebastian Lackner
sebastian at fds-team.de
Sun Dec 20 17:17:08 CST 2015
On 20.12.2015 19:42, Anton Baskanov wrote:
> Signed-off-by: Anton Baskanov <baskanov at 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
More information about the wine-devel
mailing list