server: Update parent window region when exposing previously invisible window.

Fixes: 33617af814
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=54949
This commit is contained in:
Jinoh Kang 2023-05-20 23:20:36 +09:00 committed by Alexandre Julliard
parent c368dfebbb
commit 078b0219aa
2 changed files with 4 additions and 9 deletions

View file

@ -5793,7 +5793,7 @@ static void test_messages(void)
test_WM_SETREDRAW(hchild);
ShowWindow(hchild, SW_SHOW);
ok_sequence(WmShowChildSeq, "ShowWindow(SW_SHOW):child", TRUE);
ok_sequence(WmShowChildSeq, "ShowWindow(SW_SHOW):child", FALSE);
/* check parent messages too */
log_all_parent_messages++;
@ -9467,12 +9467,10 @@ static void test_swp_paint_region_on_show(void)
"GetUpdateRgn on child shall succeed\n" );
result = GetRgnBox( hrgn_actual, &rect_actual );
todo_wine_if (result == NULLREGION)
ok( result == SIMPLEREGION, "GetRgnBox (on parent) returned %d\n", result );
if (result == COMPLEXREGION) dump_region( hrgn_actual );
rect_expect = rect_1;
todo_wine_if (IsRectEmpty( &rect_actual ))
ok( EqualRect( &rect_actual, &rect_expect ), "parent update region: got %s, expected %s\n",
wine_dbgstr_rect( &rect_actual ), wine_dbgstr_rect( &rect_expect ) );
@ -9506,12 +9504,10 @@ static void test_swp_paint_region_on_show(void)
"GetUpdateRgn on child shall succeed\n" );
result = GetRgnBox( hrgn_actual, &rect_actual );
todo_wine_if (result == NULLREGION)
ok( result == SIMPLEREGION, "GetRgnBox (on parent) returned %d\n", result );
if (result == COMPLEXREGION) dump_region( hrgn_actual );
rect_expect = rect_2;
todo_wine_if (IsRectEmpty( &rect_actual ))
ok( EqualRect( &rect_actual, &rect_expect ), "parent update region: got %s, expected %s\n",
wine_dbgstr_rect( &rect_actual ), wine_dbgstr_rect( &rect_expect ) );
@ -9565,12 +9561,10 @@ static void test_swp_paint_region_on_extend_zerosize(void)
"GetUpdateRgn on child shall succeed\n" );
result = GetRgnBox( hrgn_actual, &rect_actual );
todo_wine_if (result == NULLREGION)
ok( result == SIMPLEREGION, "GetRgnBox (on parent) returned %d\n", result );
if (result == COMPLEXREGION) dump_region( hrgn_actual );
rect_expect = rect_1;
todo_wine_if (IsRectEmpty( &rect_actual ))
ok( EqualRect( &rect_actual, &rect_expect ), "parent update region: got %s, expected %s\n",
wine_dbgstr_rect( &rect_actual ), wine_dbgstr_rect( &rect_expect ) );

View file

@ -1766,8 +1766,9 @@ static struct region *expose_window( struct window *win, const rectangle_t *old_
offset_region( new_vis_rgn, win->window_rect.left - old_window_rect->left,
win->window_rect.top - old_window_rect->top );
if (is_composited ? union_region( new_vis_rgn, old_vis_rgn, new_vis_rgn )
: subtract_region( new_vis_rgn, old_vis_rgn, new_vis_rgn ))
if (is_region_empty( old_vis_rgn ) ||
(is_composited ? union_region( new_vis_rgn, old_vis_rgn, new_vis_rgn )
: subtract_region( new_vis_rgn, old_vis_rgn, new_vis_rgn )))
{
if (!is_region_empty( new_vis_rgn ))
{