|
From: Francois V. <fvo...@fr...> - 2019-10-12 12:20:16
|
Le 12/10/2019 à 10:07, Harald Oehlmann a écrit :
> Checkout is 440d0d87.
> I tested it against 8.6.6rc0
>
> The result for bind-32.2 is now:
>
> ==== bind-34.2 -warp works relatively to the screen FAILED
> ==== Contents of test case:
>
> # Contrary to bind-34.1, we're directly checking screen coordinates
> event generate {} <Motion> -x 20 -y 20 -warp 1
> update idletasks ; # DoWarp is an idle callback
> set res [winfo pointerxy .]
> event generate {} <Motion> -x 200 -y 200 -warp 1
> update idletasks ; # DoWarp is an idle callback
> lappend res {*}[winfo pointerxy .]
>
> ---- Result was:
> 628 651 200 200
> ---- Result should have been (exact matching):
> 20 20 200 200
This results indicates that the idle callback 'DoWarp' is not executed
at the time the test expects it to be.
The command
event generate {} <Motion> -x 20 -y 20 -warp 1
schedules an idle callback 'DoWarp'.
We want this callback to be serviced before requesting the pointer
position through
set res [winfo pointerxy .]
and that's why I'm calling 'update idletasks' in between these two
statements.
If I remove this 'update idletasks', then I reproduce the behavior
you're seeing, this is normal and expected.
But it shouldn't happen with the 'update idletasks'.
The test works on my system and I simply have no idea why it doesn't on
yours.
Can you start debugging this? It's hard for me to guess since I don't
reproduce.
The first thing to check is that in wish the following command:
event generate {} <Motion> -x 20 -y 20 -warp 1
moves the pointer at the correct position (20,20) in screen coordinates.
I'm sure it does so this should be a timing/event issue specific to the
test. Then, look at how the test can be improved to make it more robust
(against... what exactly...?)
Thanks,
Francois
|