From: Rémi Bernon rbernon@codeweavers.com
So a delayed update might still be applied from the desired state if we only requested a partial update, for instance only changed position.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=57465 --- dlls/winex11.drv/window.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/dlls/winex11.drv/window.c b/dlls/winex11.drv/window.c index dee8bec18d0..0052dcc8439 100644 --- a/dlls/winex11.drv/window.c +++ b/dlls/winex11.drv/window.c @@ -1324,7 +1324,12 @@ static void window_set_config( struct x11drv_win_data *data, const RECT *new_rec mask |= CWStackMode; }
- data->pending_state.rect = *new_rect; + if (mask & (CWX | CWY)) OffsetRect( &data->pending_state.rect, new_rect->left - old_rect->left, new_rect->top - old_rect->top ); + if (mask & (CWWidth | CWHeight)) + { + data->pending_state.rect.right = data->pending_state.rect.left + new_rect->right - new_rect->left; + data->pending_state.rect.bottom = data->pending_state.rect.top + new_rect->bottom - new_rect->top; + } data->configure_serial = NextRequest( data->display ); TRACE( "window %p/%lx, requesting config %s above %u, serial %lu\n", data->hwnd, data->whole_window, wine_dbgstr_rect(new_rect), above, data->configure_serial );