emit clipItemSelected(item, item->selectedEffectIndex());
}
} else if (m_dragItem && !m_dragItem->isItemLocked()) {
+ editClipDuration();
+ } else {
+ QList<QGraphicsItem *> collisionList = items(event->pos());
+ if (collisionList.count() == 1 && collisionList.at(0)->type() == GUIDEITEM) {
+ Guide *editGuide = (Guide *) collisionList.at(0);
+ if (editGuide) slotEditGuide(editGuide->info());
+ }
+ }
+}
+
+void CustomTrackView::editClipDuration()
+{
+ AbstractClipItem *item;
+ if (m_dragItem) {
+ item = m_dragItem;
+ }
+ else {
+ GenTime pos = GenTime((int)(mapToScene(m_menuPosition).x()), m_document->fps());
+ int track = (int)(mapToScene(m_menuPosition).y() / m_tracksHeight);
+ item = getClipItemAt(pos, track);
+ }
+
+ if (item && !item->isItemLocked()) {
GenTime minimum;
GenTime maximum;
- if (m_dragItem->type() == TRANSITIONWIDGET) {
- getTransitionAvailableSpace(m_dragItem, minimum, maximum);
+ if (item->type() == TRANSITIONWIDGET) {
+ getTransitionAvailableSpace(item, minimum, maximum);
} else {
- getClipAvailableSpace(m_dragItem, minimum, maximum);
+ getClipAvailableSpace(item, minimum, maximum);
}
//kDebug()<<"// GOT MOVE POS: "<<minimum.frames(25)<<" - "<<maximum.frames(25);
- ClipDurationDialog d(m_dragItem, m_document->timecode(), minimum, maximum, this);
+ ClipDurationDialog d(item, m_document->timecode(), minimum, maximum, this);
if (d.exec() == QDialog::Accepted) {
- if (m_dragItem->type() == TRANSITIONWIDGET) {
+ if (item->type() == TRANSITIONWIDGET) {
// move & resize transition
ItemInfo startInfo;
- startInfo.startPos = m_dragItem->startPos();
- startInfo.endPos = m_dragItem->endPos();
- startInfo.track = m_dragItem->track();
+ startInfo.startPos = item->startPos();
+ startInfo.endPos = item->endPos();
+ startInfo.track = item->track();
ItemInfo endInfo;
endInfo.startPos = d.startPos();
endInfo.endPos = endInfo.startPos + d.duration();
- endInfo.track = m_dragItem->track();
+ endInfo.track = item->track();
MoveTransitionCommand *command = new MoveTransitionCommand(this, startInfo, endInfo, true);
m_commandStack->push(command);
} else {
// move and resize clip
QUndoCommand *moveCommand = new QUndoCommand();
moveCommand->setText(i18n("Edit clip"));
- ItemInfo clipInfo = m_dragItem->info();
- if (d.duration() < m_dragItem->cropDuration() || d.cropStart() != clipInfo.cropStart) {
+ ItemInfo clipInfo = item->info();
+ if (d.duration() < item->cropDuration() || d.cropStart() != clipInfo.cropStart) {
// duration was reduced, so process it first
ItemInfo startInfo = clipInfo;
clipInfo.endPos = clipInfo.startPos + d.duration();
if (d.startPos() != clipInfo.startPos) {
ItemInfo startInfo = clipInfo;
clipInfo.startPos = d.startPos();
- clipInfo.endPos = m_dragItem->endPos() + (clipInfo.startPos - startInfo.startPos);
+ clipInfo.endPos = item->endPos() + (clipInfo.startPos - startInfo.startPos);
new MoveClipCommand(this, startInfo, clipInfo, true, moveCommand);
}
- if (d.duration() > m_dragItem->cropDuration()) {
+ if (d.duration() > item->cropDuration()) {
// duration was increased, so process it after move
ItemInfo startInfo = clipInfo;
clipInfo.endPos = clipInfo.startPos + d.duration();
m_commandStack->push(moveCommand);
}
}
- } else {
- QList<QGraphicsItem *> collisionList = items(event->pos());
- if (collisionList.count() == 1 && collisionList.at(0)->type() == GUIDEITEM) {
- Guide *editGuide = (Guide *) collisionList.at(0);
- if (editGuide) slotEditGuide(editGuide->info());
- }
}
}
-
void CustomTrackView::editKeyFrame(const GenTime pos, const int track, const int index, const QString keyframes)
{
ClipItem *clip = getClipItemAt((int)pos.frames(m_document->fps()), track);
//item->moveTransition(GenTime((int) (endPos.x() - startPos.x()), m_document->fps()));
KdenliveSettings::setSnaptopoints(snap);
item->updateTransitionEndTrack(getPreviousVideoTrack(end.track));
- m_document->renderer()->mltMoveTransition(item->transitionTag(), m_document->tracksCount() - start.track, m_document->tracksCount() - end.track, item->transitionEndTrack(), start.startPos, start.endPos, end.startPos, end.endPos);
+ m_document->renderer()->mltMoveTransition(item->transitionTag(), m_document->tracksCount() - start.track, m_document->tracksCount() - item->track(), item->transitionEndTrack(), start.startPos, start.endPos, item->startPos(), item->endPos());
if (m_dragItem && m_dragItem == item) {
QPoint p;
ClipItem *transitionClip = getClipItemAt(item->startPos(), item->track());
d.track_nb->setValue(ix);
d.slotUpdateName(ix);
d.setWindowTitle(i18n("Change Track Type"));
-
- if (m_document->trackInfoAt(m_document->tracksCount() - ix - 1).type == VIDEOTRACK)
+
+ TrackInfo oldInfo = m_document->trackInfoAt(m_document->tracksCount() - ix - 1);
+ if (oldInfo.type == VIDEOTRACK)
d.video_track->setChecked(true);
else
d.audio_track->setChecked(true);
TrackInfo info;
info.isLocked = false;
info.isMute = false;
+ info.trackName = oldInfo.trackName;
ix = d.track_nb->value();
if (d.video_track->isChecked()) {