window: Fix potential freeze during resize
The loop in `Window::handleInteractiveMoveResize` "bruteforces" the value for `nextMoveResizeGeom` such that the area of `nextMoveResizeGeom` contains at least `requiredPixels`. In each loop iteration, one or more attributes (left, right, top, bottom) of `nextMoveResizeGeom` are selected to be moved +/-1.0 towards the value of `currentMoveResizeGeom`. The loop terminates if either the area of `nextMoveResizeGeom` is large enough or `nextMoveResizeGeom == currentMoveResizeGeom`. The problem is that the variables compared and adjusted here are floating point variables, and their difference may not be a whole number. Using +/-1.0 adjustments can make the loop oscillate indefinitely around the target value. This commit ensures loop termination by using `qFuzzyCompare` to compare floating point values and correctly handles the cases where adjustments smaller than 1.0 are needed to reach the target value.
Please register or sign in to comment