On Windows, fix RedrawRequested delivery

When calling `Window::request_redraw` from the `RedrawRequested`
handler the `RedrawWindow` won't result in `WM_PAINT` being delivered
due since user callback is run before `DefWindowProcW` is called.

Track whether the user called `Window::request_redraw` and ask for
`RedrawWindow` after running the said function during `WM_PAINT`
handling.

Fixes #3150.
This commit is contained in:
Kirill Chibisov 2023-10-20 14:52:01 +04:00 committed by GitHub
parent c0db53a516
commit 98b3508aca
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 24 additions and 9 deletions

View file

@ -52,6 +52,9 @@ pub(crate) struct WindowState {
pub is_active: bool,
pub is_focused: bool,
// Flag whether redraw was requested.
pub redraw_requested: bool,
pub dragging: bool,
pub skip_taskbar: bool,
@ -166,6 +169,7 @@ impl WindowState {
is_active: false,
is_focused: false,
redraw_requested: false,
dragging: false,