wayland: Fix resizing with fractional increments

Rounded client sizes are checked, which is okay if we want to determine whether the window geometries match. But it doesn't mean that the requested frame size can be used.

We need to run nextClientSizeToFrameSize() on top to make sure that the frame tightly wraps the surface.

For example, consider that the rect.width() is 10.5 and the target scale factor is 2. If there are no borders, the requested client size will be 11. If the current client size happens to be 11 as well, then the final frame geometry will have 10.5 width, which is totally incorrect, it has to be 11. If kwin uses 10.5 width, then the outline around the window may not have uniform thickness.

During interactive resize, the snapped geometry also needs to be gravitated so when you drag the left edge of the window, the right edge doesn't move left and right chaotically.

Merge request reports

Loading