[PATCH 0/1] MR1306: win32u: When the window is not visible but has WS_VISIBLE flag, we should update the vis rgn.
When the child window and the parent window are no longer in the same process, the parent window shadow does not update the vis rgn of the child window and modify the WS_VISIBLE style of the child window. so we need to update the vis rgn when another process gets the DC of the child window. Signed-off-by: Jiajin Cui <cuijiajin(a)uniontech.com> -- https://gitlab.winehq.org/wine/wine/-/merge_requests/1306
From: Jiajin Cui <cuijiajin(a)uniontech.com> When the child window and the parent window are no longer in the same process, the parent window shadow does not update the vis rgn of the child window and modify the WS_VISIBLE style of the child window. so we need to update the vis rgn when another process gets the DC of the child window. Signed-off-by: Jiajin Cui <cuijiajin(a)uniontech.com> --- dlls/win32u/dce.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/dlls/win32u/dce.c b/dlls/win32u/dce.c index 0c25fdcf61b..aaffbede16d 100644 --- a/dlls/win32u/dce.c +++ b/dlls/win32u/dce.c @@ -1012,6 +1012,9 @@ HDC WINAPI NtUserGetDCEx( HWND hwnd, HRGN clip_rgn, DWORD flags ) /* cross-process invalidation is not supported yet, so always update the vis rgn */ if (!is_current_process_window( hwnd )) update_vis_rgn = TRUE; + /*the Window is not visible but have WS_VISIBLE style, so update the vis rgn */ + if(!is_window_visible( hwnd ) && get_window_long( hwnd, GWL_STYLE ) & WS_VISIBLE) update_vis_rgn = TRUE; + if (set_dce_flags( dce->hdc, DCHF_VALIDATEVISRGN )) update_vis_rgn = TRUE; /* DC was dirty */ if (update_vis_rgn) update_visible_region( dce ); -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/1306
This merge request was closed by Jiajin Cui. -- https://gitlab.winehq.org/wine/wine/-/merge_requests/1306
participants (2)
-
Jiajin Cui -
Jiajin Cui (@jin-king1)