+ updateSnapPoints(m_dragItem);
+ if (m_dragItem && m_dragItem->type() == AVWIDGET) emit clipItemSelected((ClipItem*) m_dragItem);
+ else emit clipItemSelected(NULL);
+
+ if (m_selectionGroup) {
+ // delete selection group
+ scene()->destroyItemGroup(m_selectionGroup);
+ m_selectionGroup = NULL;
+ }
+
+ if (m_dragItem && m_operationMode == NONE) QGraphicsView::mousePressEvent(event);
+
+ QList<QGraphicsItem *> selection = m_scene->selectedItems();
+ if (selection.count() > 1) {
+ m_selectionGroup = new AbstractGroupItem(m_document->fps());
+ scene()->addItem(m_selectionGroup);
+ for (int i = 0; i < selection.count(); i++) {
+ if (selection.at(i)->type() == AVWIDGET || selection.at(i)->type() == TRANSITIONWIDGET)
+ m_selectionGroup->addToGroup(selection.at(i));
+ }
+ QPointF top = m_selectionGroup->boundingRect().topLeft();
+ const int width = m_selectionGroup->boundingRect().width();
+ const int height = m_selectionGroup->boundingRect().height();
+ m_selectionGroup->setPos(top);
+ m_selectionGroup->translate(-top.x(), -top.y() + 1);
+ m_selectionGroupInfo.startPos = GenTime(m_selectionGroup->scenePos().x(), m_document->fps());
+ m_selectionGroupInfo.track = m_selectionGroup->track();
+ }
+
+ m_clickPoint = QPoint((int)(mapToScene(event->pos()).x() - m_dragItem->startPos().frames(m_document->fps())), (int)(event->pos().y() - m_dragItem->pos().y()));
+ /*
+ if (!item->isSelected()) {
+
+ if (event->modifiers() != Qt::ControlModifier) {
+ QList<QGraphicsItem *> itemList = items();
+ for (int i = 0; i < itemList.count(); i++) {
+ itemList.at(i)->setSelected(false);
+ itemList.at(i)->update();
+ }
+ }
+ item->setSelected(true);
+ item->update();
+ }
+
+
+
+ m_clickPoint = QPoint((int)(mapToScene(event->pos()).x() - m_dragItem->startPos().frames(m_document->fps()) * m_scale), (int)(event->pos().y() - m_dragItem->pos().y()));
+ m_dragItemInfo.startPos = m_dragItem->startPos();
+ m_dragItemInfo.endPos = m_dragItem->endPos();
+ m_dragItemInfo.track = m_dragItem->track();
+
+ m_selectedClipList.clear();
+ QList<QGraphicsItem *> selected = scene()->selectedItems();
+ for (int i = 0; i < selected.count(); i++) {
+ if (selected.at(i)->type() == AVWIDGET || selected.at(i)->type() == TRANSITIONWIDGET)
+ m_selectedClipList.append(static_cast <AbstractClipItem *>(selected.at(i)));
+ }
+ */
+ m_operationMode = m_dragItem->operationMode(mapToScene(event->pos()));
+
+ if (m_operationMode == KEYFRAME) {
+ m_dragItem->updateSelectedKeyFrame();
+ m_blockRefresh = false;
+ return;
+ } else if (m_operationMode == MOVE) {
+ setCursor(Qt::ClosedHandCursor);
+ } else if (m_operationMode == TRANSITIONSTART) {
+ ItemInfo info;
+ info.startPos = m_dragItem->startPos();
+ info.track = m_dragItem->track();
+ int transitiontrack = getPreviousVideoTrack(info.track);
+ ClipItem *transitionClip = NULL;
+ if (transitiontrack != 0) transitionClip = getClipItemAt((int) info.startPos.frames(m_document->fps()), m_scene->m_tracksList.count() - transitiontrack);
+ if (transitionClip && transitionClip->endPos() < m_dragItem->endPos()) {
+ info.endPos = transitionClip->endPos();
+ } else info.endPos = info.startPos + GenTime(2.5);
+
+ slotAddTransition((ClipItem *) m_dragItem, info, transitiontrack);
+ } else if (m_operationMode == TRANSITIONEND) {
+ ItemInfo info;
+ info.endPos = m_dragItem->endPos();
+ info.track = m_dragItem->track();
+ int transitiontrack = getPreviousVideoTrack(info.track);
+ ClipItem *transitionClip = NULL;
+ if (transitiontrack != 0) transitionClip = getClipItemAt((int) info.endPos.frames(m_document->fps()), m_scene->m_tracksList.count() - transitiontrack);
+ if (transitionClip && transitionClip->startPos() > m_dragItem->startPos()) {
+ info.startPos = transitionClip->startPos();
+ } else info.startPos = info.endPos - GenTime(2.5);
+ slotAddTransition((ClipItem *) m_dragItem, info, transitiontrack);
+ }
+
+ m_blockRefresh = false;