connect(m_trackview, SIGNAL(updateTrackHeaders()), this, SLOT(slotRepaintTracks()));
parseDocument(m_doc->toXml());
- int error = m_doc->setSceneList();
- if (error == -1) *ok = false;
+ if (m_doc->setSceneList() == -1) *ok = false;
else *ok = true;
connect(m_trackview, SIGNAL(cursorMoved(int, int)), m_ruler, SLOT(slotCursorMoved(int, int)));
connect(m_trackview->horizontalScrollBar(), SIGNAL(valueChanged(int)), m_ruler, SLOT(slotMoveRuler(int)));
else if (paramName == "force_track" && p.text() == "1") forceTrack = true;
}
}
+ if (a_track == b_track || b_track == 0) {
+ // invalid transition, remove it
+ m_documentErrors.append(i18n("Removed invalid transition: %1", e.attribute("id")) + '\n');
+ tractor.removeChild(transitions.item(i));
+ i--;
+ continue;
+ }
if (transitionAdd || mlt_service != "mix") {
// Transition should be added to the scene
ItemInfo transitionInfo;
if (locked) item->setItemLocked(true);
clip->addReference();
position += (out - in + 1);
- kDebug() << "/////////\n\n\n" << "CLIP SPEED: " << speed << ", " << strobe << "\n\n\n/////////////////////";
if (speed != 1.0 || strobe > 1) {
QDomElement speedeffect = MainWindow::videoEffects.getEffectByTag(QString(), "speed").cloneNode().toElement();
EffectsList::setParameter(speedeffect, "speed", QString::number((int)(100 * speed + 0.5)));
if (factor.startsWith('%')) {
fact = ProfilesDialog::getStringEval(m_doc->mltProfile(), factor);
} else fact = factor.toDouble();
- e.setAttribute("value", paramvalue.toDouble() * fact);
+ if (e.attribute("type") == "simplekeyframe") {
+ QStringList kfrs = paramvalue.split(";");
+ for (int l = 0; l < kfrs.count(); l++) {
+ QString fr = kfrs.at(l).section("=", 0, 0);
+ double val = kfrs.at(l).section("=", 1, 1).toDouble();
+ kfrs[l] = fr + ":" + QString::number((int)(val * fact));
+ }
+ e.setAttribute("keyframes", kfrs.join(";"));
+ } else e.setAttribute("value", paramvalue.toDouble() * fact);
} else e.setAttribute("value", paramvalue);
break;
}