https://bugs.kde.org/show_bug.cgi?id=499913

--- Comment #27 from antonio <antde...@gmail.com> ---
I doing tests I narrowed the problem to the second loop, in the
"Window::nextInteractiveMoveGeometry" function, relating to the condition:

// since nextMoveResizeGeom is fractional, at best it is within 1 unit of
currentMoveResizeGeom
if (std::abs(currentMoveResizeGeom.left() - nextMoveResizeGeom.left()) < 1.0
 && std::abs(currentMoveResizeGeom.right() - nextMoveResizeGeom.right()) < 1.0
 && std::abs(currentMoveResizeGeom.top() - nextMoveResizeGeom.top()) < 1.0
 && std::abs(currentMoveResizeGeom.bottom() - nextMoveResizeGeom.bottom()) <
1.0) {
 break; // Prevent lockup
}

I traced on file the values ​​when the freeze occurred:

freeze top: (256.976 257.976), (1547.98 1548.98), (-1.86822 -1.86822), (983.132
983.132)
freeze bottom: (413.755 415.755), (1704.75 1706.75), (1012.65 1012.65),
(1997.65 1997.65)

so based on the detected values I changed the condition (from "<1.0" to
"<=1.0"):

if (std::abs(currentMoveResizeGeom.left() - nextMoveResizeGeom.left()) <= 1.0
&& std::abs(currentMoveResizeGeom.right() - nextMoveResizeGeom.right()) <= 1.0
&& std::abs(currentMoveResizeGeom.top() - nextMoveResizeGeom.top()) <= 1.0
&& std::abs(currentMoveResizeGeom.bottom() - nextMoveResizeGeom.bottom()) <=
1.0) {
break; // Prevent lockup
}

and it seems to work well on both the top and bottom edges.

I tried both, with 10px default and with 0px, for now no freeze.

-- 
You are receiving this mail because:
You are watching all bug changes.

Reply via email to