diff --git a/scribus/canvasmode_normal.cpp b/scribus/canvasmode_normal.cpp index db3365b07..05d0802ad 100644 --- a/scribus/canvasmode_normal.cpp +++ b/scribus/canvasmode_normal.cpp @@ -765,9 +765,13 @@ void CanvasMode_Normal::mouseMoveEvent(QMouseEvent *m) QRect tx = p.mapRect(QRect(0, 0, static_cast(currItem->width()), static_cast(currItem->height()))); if ((tx.intersects(mpo)) && (!currItem->locked())) { - m_view->setCursor(QCursor(Qt::OpenHandCursor)); + Qt::CursorShape cursorShape = Qt::OpenHandCursor; + if (!currItem->sizeLocked()) - m_view->HandleCurs(currItem, mpo); + cursorShape = m_view->getResizeCursor(currItem, mpo, cursorShape); + m_view->setCursor(QCursor(cursorShape)); } } } diff --git a/scribus/scribusview.cpp b/scribus/scribusview.cpp index 0fe36c428..aa46227f7 100644 --- a/scribus/scribusview.cpp +++ b/scribus/scribusview.cpp @@ -1737,11 +1737,11 @@ void ScribusView::dragTimerTimeOut() // qApp->changeOverrideCursor(QCursor(loadIcon("dragpix.png"))); } -void ScribusView::HandleCurs(PageItem *currItem, QRect mpo) +Qt::CursorShape ScribusView::getResizeCursor(PageItem *currItem, QRect mpo, Qt::CursorShape cursorShape) { QPoint tx, tx2; QTransform ma; - // ma.translate(-Doc->minCanvasCoordinate.x()*m_canvas->scale(), -Doc->minCanvasCoordinate.y()*m_canvas->scale()); + m_canvas->Transform(currItem, ma); tx = ma.map(QPoint(static_cast(currItem->width()), 0)); tx2 = ma.map(QPoint(0, static_cast(currItem->height()))); @@ -1749,9 +1749,9 @@ void ScribusView::HandleCurs(PageItem *currItem, QRect mpo) { double rr = fabs(currItem->rotation()); if (((rr >= 0.0) && (rr < 45.0)) || ((rr >= 135.0) && (rr < 225.0)) || ((rr >=315.0) && (rr <= 360.0))) - setCursor(QCursor(Qt::SizeBDiagCursor)); + cursorShape = Qt::SizeBDiagCursor; if (((rr >= 45.0) && (rr < 135.0)) || ((rr >= 225.0) && (rr < 315.0))) - setCursor(QCursor(Qt::SizeFDiagCursor)); + cursorShape = Qt::SizeFDiagCursor; } tx = ma.map(QPoint(static_cast(currItem->width()), static_cast(currItem->height())/2)); tx2 = ma.map(QPoint(0, static_cast(currItem->height())/2)); @@ -1759,9 +1759,9 @@ void ScribusView::HandleCurs(PageItem *currItem, QRect mpo) { double rr = fabs(currItem->rotation()); if (((rr >= 0.0) && (rr < 45.0)) || ((rr >= 135.0) && (rr < 225.0)) || ((rr >= 315.0) && (rr <= 360.0))) - setCursor(QCursor(Qt::SizeHorCursor)); + cursorShape = Qt::SizeHorCursor; if (((rr >= 45.0) && (rr < 135.0)) || ((rr >= 225.0) && (rr < 315.0))) - setCursor(QCursor(Qt::SizeVerCursor)); + cursorShape = Qt::SizeVerCursor; } tx = ma.map(QPoint(static_cast(currItem->width())/2, 0)); tx2 = ma.map(QPoint(static_cast(currItem->width())/2, static_cast(currItem->height()))); @@ -1769,9 +1769,9 @@ void ScribusView::HandleCurs(PageItem *currItem, QRect mpo) { double rr = fabs(currItem->rotation()); if (((rr >= 0.0) && (rr < 45.0)) || ((rr >= 135.0) && (rr < 225.0)) || ((rr >= 315.0) && (rr <= 360.0))) - setCursor(QCursor(Qt::SizeVerCursor)); + cursorShape = Qt::SizeVerCursor; if (((rr >= 45.0) && (rr < 135.0)) || ((rr >= 225.0) && (rr < 315.0))) - setCursor(QCursor(Qt::SizeHorCursor)); + cursorShape = Qt::SizeHorCursor; } tx = ma.map(QPoint(static_cast(currItem->width()), static_cast(currItem->height()))); tx2 = ma.map(QPoint(0, 0)); @@ -1782,11 +1782,13 @@ void ScribusView::HandleCurs(PageItem *currItem, QRect mpo) double rr = fabs(currItem->rotation()); if (((rr >= 0.0) && (rr < 45.0)) || ((rr >= 135.0) && (rr < 225.0)) || ((rr >= 315.0) && (rr <= 360.0))) - setCursor(QCursor(Qt::SizeFDiagCursor)); + cursorShape = Qt::SizeFDiagCursor; if (((rr >= 45.0) && (rr < 135.0)) || ((rr >= 225.0) && (rr < 315.0))) - setCursor(QCursor(Qt::SizeBDiagCursor)); + cursorShape = Qt::SizeBDiagCursor; } } + + return cursorShape; } void ScribusView::SelectItemNr(uint nr, bool draw, bool single) diff --git a/scribus/scribusview.h b/scribus/scribusview.h index d05424e2a..50f3f6758 100644 --- a/scribus/scribusview.h +++ b/scribus/scribusview.h @@ -176,7 +176,8 @@ public: bool PointOnLine(QPoint Start, QPoint Ende, QRect MArea); void TransformPoly(int mode, int rot = 1, double scaling = 1.0); bool slotSetCurs(int x, int y); - void HandleCurs(PageItem *currItem, QRect mpo); + // \brief return a resize cursor if the mouse is on a handle. + Qt::CursorShape getResizeCursor(PageItem *currItem, QRect mpo, Qt::CursorShape cursorShape = Qt::ArrowCursor); void Deselect(bool prop = true); void SelectItemNr(uint nr, bool draw = true, bool single = false); void SelectItem(PageItem *pi, bool draw = true, bool single = false);