https://bugs.winehq.org/show_bug.cgi?id=56210
--- Comment #5 from John Nagle nagle@animats.com --- Suspicion as to what's happening:
Windows has an event queue. One kind of event is "refresh screen". The Rust Winit library assumes that non-refresh events are processed before refresh events. That seems to be the case for real Windows.
If that is not the case for Wine's event queue, or if multiple refresh events are not coalesced into one, that would explain this behavior. For example, if Wine's event queue is a simple FIFO, this behavior would probably occur.
See
https://docs.rs/winit/0.29.10/winit/event/index.html
for the expected order of event processing. I've looked at the winit code, and it appears to assume that it gets that ordering from the platform layer. (Winit is cross-platform - Mac, Windows, Linux, Android, browsers...)
So please take a look at the Wine event queue ordering. Thanks.