for (int i = 0; i < list.count(); i++) {
if (list.at(i)->data().toString() == "paste_effects") m_pasteEffectsAction = list.at(i);
else if (list.at(i)->data().toString() == "ungroup_clip") m_ungroupAction = list.at(i);
+ else if (list.at(i)->data().toString() == "A") m_audioActions.append(list.at(i));
+ else if (list.at(i)->data().toString() == "A+V") m_avActions.append(list.at(i));
}
m_timelineContextTransitionMenu = transition;
m_dragGuide = NULL;
if (m_tool != RAZORTOOL) activateMonitor();
- else if (m_document->renderer()->playSpeed() != 0.0) {
+ else if (m_document->renderer()->isPlaying()) {
m_document->renderer()->pause();
return;
}
QSet <QGraphicsItem *> itemsList;
for (int i = 0; i < selection.count(); i++) {
+ if (selectNewGroup) selection.at(i)->setSelected(true);
if (selection.at(i)->type() == GROUPWIDGET) {
groupsList.insert(static_cast<AbstractGroupItem*> (selection.at(i)));
}
return;
}
- AddTimelineClipCommand *command = new AddTimelineClipCommand(this, clip->toXML(), clip->getId(), pasteInfo, EffectsList(), m_scene->editMode() == OVERWRITEEDIT, m_scene->editMode() == INSERTEDIT, true, false);
- updateTrackDuration(pasteInfo.track, command);
- m_commandStack->push(command);
+ // Add refresh command for undo
+ QUndoCommand *addCommand = new QUndoCommand();
+ addCommand->setText(i18n("Add timeline clip"));
+ new RefreshMonitorCommand(this, false, true, addCommand);
+ new AddTimelineClipCommand(this, clip->toXML(), clip->getId(), pasteInfo, EffectsList(), m_scene->editMode() == OVERWRITEEDIT, m_scene->editMode() == INSERTEDIT, true, false, addCommand);
+ new RefreshMonitorCommand(this, true, false, addCommand);
+ updateTrackDuration(pasteInfo.track, addCommand);
+
+ m_commandStack->push(addCommand);
selectClip(true, false);
// Automatic audio split
ItemInfo clipinfo = item->info();
clipinfo.track = m_document->tracksCount() - clipinfo.track;
- bool success = m_document->renderer()->mltResizeClipEnd(clipinfo, info.endPos - info.startPos);
+ bool success = m_document->renderer()->mltResizeClipEnd(clipinfo, info.endPos - info.startPos, false);
if (success) {
item->resizeEnd((int) info.endPos.frames(m_document->fps()));
setDocumentModified();
QUndoCommand *addCommand = new QUndoCommand();
addCommand->setText(i18n("Add timeline clip"));
QList <ClipItem *> brokenClips;
+
+ // Add refresh command for undo
+ new RefreshMonitorCommand(this, false, true, addCommand);
for (int i = 0; i < items.count(); i++) {
ClipItem *item = static_cast <ClipItem *>(items.at(i));
}
item->setSelected(true);
}
+ // Add refresh command for redo
+ new RefreshMonitorCommand(this, false, false, addCommand);
+
qDeleteAll(brokenClips);
brokenClips.clear();
if (addCommand->childCount() > 0) m_commandStack->push(addCommand);
item->updateRectGeometry();
if (item->cropDuration().frames(m_document->fps()) != endPos)
item->resizeEnd((int) info.startPos.frames(m_document->fps()) + endPos - 1);
- updatePositionEffects(item, info);
+ updatePositionEffects(item, info, false);
setDocumentModified();
} else {
emit displayMessage(i18n("Invalid clip"), ErrorMessage);
QList<QGraphicsItem *> selection = m_scene->items(r);
QUndoCommand *deleteTrack = new QUndoCommand();
deleteTrack->setText("Delete track");
+ new RefreshMonitorCommand(this, false, true, deleteTrack);
// Delete all clips in selected track
for (int i = 0; i < selection.count(); i++) {
}
new AddTrackCommand(this, ix, trackinfo, false, deleteTrack);
+ new RefreshMonitorCommand(this, true, false, deleteTrack);
m_commandStack->push(deleteTrack);
}
void CustomTrackView::updateClipTypeActions(ClipItem *clip)
{
+ bool hasAudio;
+ bool hasAV;
if (clip == NULL || (clip->clipType() != AV && clip->clipType() != PLAYLIST)) {
m_clipTypeGroup->setEnabled(false);
+ hasAudio = clip != NULL && clip->clipType() == AUDIO;
+ hasAV = false;
} else {
+ switch (clip->clipType()) {
+ case AV:
+ case PLAYLIST:
+ hasAudio = true;
+ hasAV = true;
+ break;
+ case AUDIO:
+ hasAudio = true;
+ hasAV = false;
+ break;
+ default:
+ hasAudio = false;
+ hasAV = false;
+ }
m_clipTypeGroup->setEnabled(true);
QList <QAction *> actions = m_clipTypeGroup->actions();
QString lookup;
}
}
}
+
+ for (int i = 0; i < m_audioActions.count(); i++) {
+ m_audioActions.at(i)->setEnabled(hasAudio);
+ }
+ for (int i = 0; i < m_avActions.count(); i++) {
+ m_avActions.at(i)->setEnabled(hasAV);
+ }
}
void CustomTrackView::slotGoToMarker(QAction *action)