diff --git a/dlls/winex11.drv/window.c b/dlls/winex11.drv/window.c index 595c54a7c0a..a16b8354245 100644 --- a/dlls/winex11.drv/window.c +++ b/dlls/winex11.drv/window.c @@ -1209,12 +1209,16 @@ static void X11DRV_window_to_X_rect( struct x11drv_win_data *data, RECT *rect, */ void X11DRV_X_to_window_rect( struct x11drv_win_data *data, RECT *rect, int x, int y, int cx, int cy ) { - x += data->window_rect.left - data->whole_rect.left; - y += data->window_rect.top - data->whole_rect.top; - cx += (data->window_rect.right - data->window_rect.left) - - (data->whole_rect.right - data->whole_rect.left); - cy += (data->window_rect.bottom - data->window_rect.top) - - (data->whole_rect.bottom - data->whole_rect.top); + RECT rc; + + get_decoration_rect( data, &rc, &data->window_rect, &data->client_rect ); + + x += min( data->window_rect.left - data->whole_rect.left, rc.left ); + y += min( data->window_rect.top - data->whole_rect.top, rc.top ); + cx += max( (data->window_rect.right - data->window_rect.left) - + (data->whole_rect.right - data->whole_rect.left), rc.right - rc.left ); + cy += max( (data->window_rect.bottom - data->window_rect.top) - + (data->whole_rect.bottom - data->whole_rect.top), rc.bottom - rc.top ); SetRect( rect, x, y, x + cx, y + cy ); }