- if (!m_view)
- return NoResize;
-
- QRectF rect = item->rect().normalized();
- // Item mapped coordinates
- QPolygon pol = item->deviceTransform(m_view->viewportTransform()).map(rect).toPolygon();
- QPainterPath top(pol.point(0));
- top.lineTo(pol.point(1));
- QPainterPath bottom(pol.point(2));
- bottom.lineTo(pol.point(3));
- QPainterPath left(pol.point(0));
- left.lineTo(pol.point(3));
- QPainterPath right(pol.point(1));
- right.lineTo(pol.point(2));
-
- QPainterPath mouseArea;
- mouseArea.addRect(pos.x() - 4, pos.y() - 4, 8, 8);
-
- // Check for collisions between the mouse and the borders
- if (mouseArea.contains(pol.point(0)))
- return TopLeft;
- else if (mouseArea.contains(pol.point(2)))
- return BottomRight;
- else if (mouseArea.contains(pol.point(1)))
- return TopRight;
- else if (mouseArea.contains(pol.point(3)))
- return BottomLeft;
- else if (top.intersects(mouseArea))
- return Top;
- else if (bottom.intersects(mouseArea))
- return Bottom;
- else if (right.intersects(mouseArea))
- return Right;
- else if (left.intersects(mouseArea))
- return Left;
- else
- return NoResize;
-}