Table columns are positioned on the left margin by two styles:
- Positioning: property: sticky;
- Offset, for example: left: 10px;
If a fixed column is dragged by the user into the flexible area, for example, the column is subsequently positioned incorrectly by the client. For the cells of the fixed column, which now becomes flexible, only the sticky position is removed, but not the offset. This ensures that the column does not get the desired positioning horizontally.
In the application itself it is difficult to detect, because by moving a table column the new column order is communicated to the server by the client. The server itself then rewrites the table. That is, the client-side swapping of cells is visible only for a fraction of the time and is hardly noticeable to the user because the server quickly overwrites it.
Since by ticket #27350 the client directly updates its representation after rearranging the columns is new. There is no further need for the server to update the table. The server only needs to accept the model with the new column order. However, at the moment this logic is not yet developed.
Test
In table.js, comment out the contents of the updateColumnOrder function. This way the client does not inform the server about the new column order. Then, in a table, drag a column from the fixed to the flexible space. There must not be any free space.