AddTimelineClipCommand *command = new AddTimelineClipCommand(this, clip->toXML(), clip->getId(), pasteInfo, EffectsList(), m_scene->editMode() == OVERWRITEEDIT, m_scene->editMode() == INSERTEDIT, true, false);
m_commandStack->push(command);
+
+ selectClip(true, false);
+ // Automatic audio split
+ if (KdenliveSettings::splitaudio())
+ splitAudio();
}
bool CustomTrackView::insertDropClips(const QMimeData *data, const QPoint pos)
brokenClips.clear();
if (addCommand->childCount() > 0) m_commandStack->push(addCommand);
else delete addCommand;
+
+ // Automatic audio split
+ if (KdenliveSettings::splitaudio())
+ splitAudio();
setDocumentModified();
/*
if (itemList.at(i)->type() == GROUPWIDGET) {
groupCount++;
QList<QGraphicsItem *> children = itemList.at(i)->childItems();
- itemList += children;
QList <ItemInfo> clipInfos;
QList <ItemInfo> transitionInfos;
GenTime currentPos = GenTime(m_cursorPos, m_document->fps());
AbstractClipItem *clip = static_cast <AbstractClipItem *>(children.at(j));
if (!clip->isItemLocked()) transitionInfos.append(clip->info());
}
+ if (itemList.contains(children.at(j))) {
+ children.removeAt(j);
+ j--;
+ }
}
- if (clipInfos.count() > 0) {
+ itemList += children;
+ if (clipInfos.count() > 0)
new GroupClipsCommand(this, clipInfos, transitionInfos, false, deleteSelected);
- }
- }
+
+ } else if (itemList.at(i)->parentItem() && itemList.at(i)->parentItem()->type() == GROUPWIDGET)
+ itemList.insert(i + 1, itemList.at(i)->parentItem());
}
for (int i = 0; i < itemList.count(); i++) {
}
}
-
void CustomTrackView::loadGroups(const QDomNodeList groups)
{
for (int i = 0; i < groups.count(); i++) {
resetSelectionGroup();
QList<QGraphicsItem *> selection = scene()->selectedItems();
if (selection.isEmpty()) {
- emit displayMessage(i18n("You must select one clip for this action"), ErrorMessage);
+ emit displayMessage(i18n("You must select at least one clip for this action"), ErrorMessage);
return;
}
QUndoCommand *splitCommand = new QUndoCommand();
}
}
}
- m_commandStack->push(splitCommand);
+ if (splitCommand->childCount() > 0)
+ m_commandStack->push(splitCommand);
}
void CustomTrackView::doSplitAudio(const GenTime &pos, int track, bool split)
int freetrack = m_document->tracksCount() - track - 1;
for (; freetrack > 0; freetrack--) {
kDebug() << "// CHK DOC TRK:" << freetrack << ", DUR:" << m_document->renderer()->mltTrackDuration(freetrack);
- if (m_document->trackInfoAt(freetrack - 1).type == AUDIOTRACK) {
+ if (m_document->trackInfoAt(freetrack - 1).type == AUDIOTRACK && !m_document->trackInfoAt(freetrack - 1).isLocked) {
kDebug() << "// CHK DOC TRK:" << freetrack << ", DUR:" << m_document->renderer()->mltTrackDuration(freetrack);
if (m_document->renderer()->mltTrackDuration(freetrack) < start || m_document->renderer()->mltGetSpaceLength(pos, freetrack, false) >= clip->cropDuration().frames(m_document->fps())) {
kDebug() << "FOUND SPACE ON TRK: " << freetrack;
viewport()->update();
}
-void CustomTrackView::selectClip(bool add, bool group)
+void CustomTrackView::selectClip(bool add, bool group, int track, int pos)
{
- QRectF rect(m_cursorPos, m_selectedTrack * m_tracksHeight + m_tracksHeight / 2, 1, 1);
+ QRectF rect;
+ if (track != -1 && pos != -1)
+ rect = QRectF(pos, track * m_tracksHeight + m_tracksHeight / 2, 1, 1);
+ else
+ rect = QRectF(m_cursorPos, m_selectedTrack * m_tracksHeight + m_tracksHeight / 2, 1, 1);
QList<QGraphicsItem *> selection = m_scene->items(rect);
resetSelectionGroup(group);
if (!group) m_scene->clearSelection();
adjustTimelineClips(OVERWRITEEDIT, NULL, info, addCommand);
new AddTimelineClipCommand(this, clip->toXML(), clip->getId(), info, EffectsList(), true, false, true, false, addCommand);
m_commandStack->push(addCommand);
+
+ selectClip(true, false, m_selectedTrack, in);
+ // Automatic audio split
+ if (KdenliveSettings::splitaudio())
+ splitAudio();
}
void CustomTrackView::clearSelection()