m_pasteEffectsAction->setEnabled(m_copiedItems.count() == 1);
}
+ if (collisionClip != NULL || m_dragItem == NULL) {
+ if (m_dragItem && m_dragItem->type() == AVWIDGET && !m_dragItem->isItemLocked()) {
+ ClipItem *selected = static_cast <ClipItem*>(m_dragItem);
+ emit clipItemSelected(selected);
+ } else emit clipItemSelected(NULL);
+ }
+
+ // If clicked item is selected, allow move
+ if (event->modifiers() != Qt::ControlModifier && m_operationMode == NONE) QGraphicsView::mousePressEvent(event);
+
+ m_clickPoint = QPoint((int)(mapToScene(event->pos()).x() - m_dragItem->startPos().frames(m_document->fps())), (int)(event->pos().y() - m_dragItem->pos().y()));
+ m_operationMode = m_dragItem->operationMode(mapToScene(event->pos()));
+
// Update snap points
- if (m_selectionGroup == NULL) updateSnapPoints(m_dragItem);
+ if (m_selectionGroup == NULL) {
+ if (m_operationMode == RESIZEEND || m_operationMode == RESIZESTART) updateSnapPoints(NULL);
+ else updateSnapPoints(m_dragItem);
+ }
else {
QList <GenTime> offsetList;
QList<QGraphicsItem *> children = m_selectionGroup->childItems();
}
}
- if (collisionClip != NULL || m_dragItem == NULL) {
- if (m_dragItem && m_dragItem->type() == AVWIDGET && !m_dragItem->isItemLocked()) {
- ClipItem *selected = static_cast <ClipItem*>(m_dragItem);
- emit clipItemSelected(selected);
- } else emit clipItemSelected(NULL);
- }
-
- // If clicked item is selected, allow move
- if (event->modifiers() != Qt::ControlModifier && m_operationMode == NONE) QGraphicsView::mousePressEvent(event);
-
- m_clickPoint = QPoint((int)(mapToScene(event->pos()).x() - m_dragItem->startPos().frames(m_document->fps())), (int)(event->pos().y() - m_dragItem->pos().y()));
- m_operationMode = m_dragItem->operationMode(mapToScene(event->pos()));
-
if (m_operationMode == KEYFRAME) {
m_dragItem->updateSelectedKeyFrame();
m_blockRefresh = false;
info.startPos = GenTime();
info.cropStart = GenTime(list.at(1).toInt(), m_document->fps());
info.endPos = GenTime(list.at(2).toInt() - list.at(1).toInt(), m_document->fps());
+ info.cropDuration = info.endPos - info.startPos;
+ info.originalcropStart = info.cropStart;
info.track = 0;
// Check if clip can be inserted at that position
}
ItemInfo info;
info.startPos = start;
- info.endPos = info.startPos + clip->duration();
+ info.cropDuration = clip->duration();
+ info.endPos = info.startPos + info.cropDuration;
info.track = track;
infoList.append(info);
start += clip->duration();
DocClipBase *clip = m_document->getBaseClip(ids.at(i));
ItemInfo info;
info.startPos = start;
- info.endPos = info.startPos + clip->duration();
+ info.cropDuration = clip->duration();
+ info.endPos = info.startPos + info.cropDuration;
info.track = 0;
- start += clip->duration();
+ start += info.cropDuration;
offsetList.append(start);
ClipItem *item = new ClipItem(clip, info, m_document->fps(), 1.0, 1, false);
item->setFlags(QGraphicsItem::ItemIsSelectable);
m_document->renderer()->mltCutClip(m_document->tracksCount() - info.track, cutTime);
int cutPos = (int) cutTime.frames(m_document->fps());
- ItemInfo newPos;
+ ItemInfo newPos = info;
double speed = item->speed();
newPos.startPos = cutTime;
newPos.endPos = info.endPos;
// parse all clip names
if (m_copiedItems.at(i) && m_copiedItems.at(i)->type() == AVWIDGET) {
ClipItem *clip = static_cast <ClipItem *>(m_copiedItems.at(i));
- ItemInfo info;
- info.startPos = clip->startPos() + offset;
- info.endPos = clip->endPos() + offset;
- info.cropStart = clip->cropStart();
- info.track = clip->track() + trackOffset;
+ ItemInfo info = clip->info();
+ info.startPos += offset;
+ info.endPos += offset;
+ info.track += trackOffset;
if (canBePastedTo(info, AVWIDGET)) {
new AddTimelineClipCommand(this, clip->xml(), clip->clipProducer(), info, clip->effectList(), true, false, pasteClips);
} else emit displayMessage(i18n("Cannot paste clip to selected place"), ErrorMessage);
if (freetrack == 0) {
emit displayMessage(i18n("No empty space to put clip audio"), ErrorMessage);
} else {
- ItemInfo info;
- info.startPos = clip->startPos();
- info.endPos = clip->endPos();
- info.cropStart = clip->cropStart();
+ ItemInfo info = clip->info();
info.track = m_document->tracksCount() - freetrack;
addClip(clip->xml(), clip->clipProducer(), info, clip->effectList());
scene()->clearSelection();