Your ROOT_URL in app.ini is http://git.osmesh.ru/ but you are visiting http://91.221.70.94:3000/MOS/OpenBoard/commit/e68336e1e30e16da026f7673a88ca905ca93e79f?style=split&whitespace=ignore-all You should set ROOT_URL correctly, otherwise the web may not work correctly.

Resizing of items fixed for all resizers instead of bottom right resizer.

preferencesAboutTextFull
Aleksei Kanash 13 years ago
parent e0c2fdc3e2
commit e68336e1e3
  1. 103
      src/domain/UBGraphicsDelegateFrame.cpp
  2. 1
      src/domain/UBGraphicsDelegateFrame.h

@ -286,6 +286,52 @@ bool UBGraphicsDelegateFrame::canResizeBottomRight(qreal width, qreal height, qr
return res; return res;
} }
QPointF UBGraphicsDelegateFrame::getFixedPointFromPos()
{
QPointF fixedPoint;
if (!moving() && !rotating())
{
if (resizingTop())
{
if (mMirrorX && mMirrorY)
{
if ((0 < mAngle) && (mAngle < 90))
fixedPoint = delegated()->sceneBoundingRect().topLeft();
else
fixedPoint = delegated()->sceneBoundingRect().topRight();
}
else
{
if ((0 < mAngle) && (mAngle <= 90))
fixedPoint = delegated()->sceneBoundingRect().bottomRight();
else
fixedPoint = delegated()->sceneBoundingRect().bottomLeft();
}
}
else if (resizingLeft())
{
if (mMirrorX && mMirrorY)
{
if ((0 < mAngle) && (mAngle < 90))
fixedPoint = delegated()->sceneBoundingRect().bottomLeft();
else
fixedPoint = delegated()->sceneBoundingRect().topLeft();
}
else
{
if ((0 < mAngle) && (mAngle <= 90))
fixedPoint = delegated()->sceneBoundingRect().topRight();
else
fixedPoint = delegated()->sceneBoundingRect().bottomRight();
}
}
else if (resizingBottomRight())
{
}
}
return fixedPoint;
}
void UBGraphicsDelegateFrame::mouseMoveEvent(QGraphicsSceneMouseEvent *event) void UBGraphicsDelegateFrame::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
{ {
if (None == mCurrentTool) if (None == mCurrentTool)
@ -461,7 +507,7 @@ void UBGraphicsDelegateFrame::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
mTranslateY += mInitialTransform.map(delegated()->boundingRect().topLeft()).y() - tr.map(delegated()->boundingRect().topLeft()).y(); mTranslateY += mInitialTransform.map(delegated()->boundingRect().topLeft()).y() - tr.map(delegated()->boundingRect().topLeft()).y();
} }
} }
else if (mOperationMode == Scaling && (resizingTop() || resizingLeft())) else if (resizingTop() || resizingLeft())
{ {
QPointF bottomRight = tr.map(delegated()->boundingRect().bottomRight()); QPointF bottomRight = tr.map(delegated()->boundingRect().bottomRight());
QPointF fixedPoint = mInitialTransform.map(delegated()->boundingRect().bottomRight()); QPointF fixedPoint = mInitialTransform.map(delegated()->boundingRect().bottomRight());
@ -478,61 +524,52 @@ void UBGraphicsDelegateFrame::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
else if (mOperationMode == Resizing) else if (mOperationMode == Resizing)
{ {
QSizeF originalSize = delegated()->boundingRect().size(); QSizeF originalSize = delegated()->boundingRect().size();
// QSizeF originalSize = delegated()->sceneBoundingRect().size(); //
mScaleX = 1; mScaleX = 1;
mScaleY = 1; mScaleY = 1;
tr = buildTransform().translate(moveX, moveY); if (!moving() && !rotating())
if (resizingRight() || resizingBottom() || resizingBottomRight() || resizingTop() || resizingLeft())
{ {
qreal dPosX = 0;
qreal dPosY = 0;
QPointF fixedPoint = getFixedPointFromPos();
qreal dPosX; if (resizingTop())
qreal dPosY; {
if (mMirrorX && mMirrorY)
if (resizingTop() || resizingLeft()) dPosY = moveY;
else
dPosY = -moveY;
}
else if (resizingLeft())
{ {
dPosX = mMirrorX ? moveX : -moveX; if (mMirrorX && mMirrorY)
dPosY = mMirrorY ? moveY : -moveY; dPosX = moveX;
else
dPosX = -moveX;
} }
else if (resizingBottomRight()) else if (resizingBottomRight())
{ {
dPosX = moveX; dPosX = moveX;
dPosY = moveY; dPosY = moveY;
} }
else else if (resizingRight())
{ dPosX = (mMirrorX) ? -moveX : moveX;
dPosX = mMirrorX ? -moveX :moveX; else if (resizingBottom())
dPosY = mMirrorY ? -moveY : moveY; dPosY = mMirrorY ? -moveY : moveY;
}
QPointF oldPos;
if (mMirrorX)
oldPos = delegated()->sceneBoundingRect().topLeft();
else
oldPos = delegated()->sceneBoundingRect().bottomRight();
delegated()->setTransform(tr);
UBResizableGraphicsItem* resizableItem = dynamic_cast<UBResizableGraphicsItem*>(delegated()); UBResizableGraphicsItem* resizableItem = dynamic_cast<UBResizableGraphicsItem*>(delegated());
if (resizableItem) if (resizableItem)
{ {
resizableItem->resize(originalSize.width() + dPosX, originalSize.height() + dPosY); resizableItem->resize(originalSize.width() + dPosX, originalSize.height() + dPosY);
if (resizingTop() || resizingLeft() || (mMirrorX && resizingBottomRight())) if (resizingTop() || resizingLeft() || ((mMirrorX || mMirrorY) && resizingBottomRight()))
{ {
QPointF newPos; QPointF newFixedPoint = getFixedPointFromPos();;
if (mMirrorX)
newPos = delegated()->sceneBoundingRect().topLeft();
else
newPos = delegated()->sceneBoundingRect().bottomRight();
delegated()->setPos(delegated()->pos()-newPos+oldPos);
delegated()->setPos(delegated()->pos()-newFixedPoint+fixedPoint);
} }
} }
} }
} }

@ -37,6 +37,7 @@ class UBGraphicsDelegateFrame: public QGraphicsRectItem, public QObject
QPainterPath shape() const; QPainterPath shape() const;
virtual void mousePressEvent(QGraphicsSceneMouseEvent *event); virtual void mousePressEvent(QGraphicsSceneMouseEvent *event);
QPointF getFixedPointFromPos();
virtual void mouseMoveEvent(QGraphicsSceneMouseEvent *event); virtual void mouseMoveEvent(QGraphicsSceneMouseEvent *event);
virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent *event); virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent *event);

Loading…
Cancel
Save