- if (!m_enabled)
- return;
-
- QPointF mousePos = event->scenePos();
-
- if (m_selectedItem && event->buttons() & Qt::LeftButton) {
- // Rect
- if (m_selectedItem->type() == 3) {
- QGraphicsRectItem *item = static_cast <QGraphicsRectItem *>(m_selectedItem);
- QRectF rect = item->rect().normalized();
- QPointF pos = item->pos();
- QPointF mousePosInRect = item->mapFromScene(mousePos);
- switch (m_resizeMode) {
- case TopLeft:
- if (mousePos.x() < pos.x() + rect.height() && mousePos.y() < pos.y() + rect.height()) {
- item->setRect(rect.adjusted(0, 0, -mousePosInRect.x(), -mousePosInRect.y()));
- item->setPos(mousePos);
- m_modified = true;
- }
- break;
- case Top:
- if (mousePos.y() < pos.y() + rect.height()) {
- rect.setBottom(rect.height() - mousePosInRect.y());
- item->setRect(rect);
- item->setPos(QPointF(pos.x(), mousePos.y()));
- m_modified = true;
- }
- break;
- case TopRight:
- if (mousePos.x() > pos.x() && mousePos.y() < pos.y() + rect.height()) {
- rect.setBottomRight(QPointF(mousePosInRect.x(), rect.bottom() - mousePosInRect.y()));
- item->setRect(rect);
- item->setPos(QPointF(pos.x(), mousePos.y()));
- m_modified = true;
- }
- break;
- case Left:
- if (mousePos.x() < pos.x() + rect.width()) {
- rect.setRight(rect.width() - mousePosInRect.x());
- item->setRect(rect);
- item->setPos(QPointF(mousePos.x(), pos.y()));
- m_modified = true;
- }
- break;
- case Right:
- if (mousePos.x() > pos.x()) {
- rect.setRight(mousePosInRect.x());
- item->setRect(rect);
- m_modified = true;
- }
- break;
- case BottomLeft:
- if (mousePos.x() < pos.x() + rect.width() && mousePos.y() > pos.y()) {
- rect.setBottomRight(QPointF(rect.width() - mousePosInRect.x(), mousePosInRect.y()));
- item->setRect(rect);
- item->setPos(QPointF(mousePos.x(), pos.y()));
- m_modified = true;
+ if (m_groupMove) {
+ // we want to move multiple items
+ // rotoscoping only for now
+ QPointF diff = event->scenePos() - m_lastPos;
+ if (diff != QPointF(0, 0)) {
+ m_lastPos = event->scenePos();
+ QList <QGraphicsItem *> selected = selectedItems();
+ int first = -1;
+ int i = 0;
+ foreach (QGraphicsItem *item, selected) {
+ BPointItem *bpoint = qgraphicsitem_cast<BPointItem *>(item);
+ if (bpoint) {
+ if (first < 0)
+ first = i;
+ BPoint p = bpoint->getPoint();
+ p.setP(p.p + diff);
+ bpoint->setPoint(p);