]> git.sesse.net Git - kdenlive/blobdiff - src/trackview.cpp
Fix several title clips problems, including:
[kdenlive] / src / trackview.cpp
index 3f39bc75812c781417516d723ed3c2ed3feef271..9d8f42b39389776d1692bb2ee3392ebd0b673464 100644 (file)
 
 #include <QScrollBar>
 
-TrackView::TrackView(KdenliveDoc *doc, QWidget *parent)
-        : QWidget(parent), m_doc(doc), m_scale(1.0), m_projectTracks(0)
+TrackView::TrackView(KdenliveDoc *doc, QWidget *parent) :
+        QWidget(parent),
+        m_scale(1.0),
+        m_projectTracks(0),
+        m_doc(doc)
 {
 
     view = new Ui::TimeLine_UI();
@@ -131,7 +134,8 @@ void TrackView::parseDocument(QDomDocument doc)
 {
     //int cursorPos = 0;
     m_documentErrors.clear();
-    // kDebug() << "//// DOCUMENT: " << doc.toString();
+
+    //kDebug() << "//// DOCUMENT: " << doc.toString();
     /*QDomNode props = doc.elementsByTagName("properties").item(0);
     if (!props.isNull()) {
         cursorPos = props.toElement().attribute("timeline_position").toInt();
@@ -151,9 +155,26 @@ void TrackView::parseDocument(QDomDocument doc)
     m_invalidProducers.clear();
     QDomNodeList producers = doc.elementsByTagName("producer");
     for (int i = 0; i < producers.count(); i++) {
-        // CHeck for invalid producers
+        // Check for invalid producers
         QDomNode n = producers.item(i);
         e = n.toElement();
+
+        /*
+        // Check for invalid markup
+        QDomNodeList params = e.elementsByTagName("property");
+        for (int j = 0; j < params.count(); j++) {
+            QDomElement p = params.item(j).toElement();
+            if (p.attribute("name") == "markup") {
+         QString val = p.text().toUtf8().data();
+         kDebug()<<"//FOUND MARKUP, VAL: "<<val;
+         //e.setAttribute("value", value);
+         n.removeChild(params.item(j));
+         break;
+            }
+        }
+        */
+
+        if (e.hasAttribute("in") == false && e.hasAttribute("out") == false) continue;
         int in = e.attribute("in").toInt();
         int out = e.attribute("out").toInt();
         if (in > out || in == out) {
@@ -187,6 +208,7 @@ void TrackView::parseDocument(QDomDocument doc)
                 m_doc->switchTrackVideo(i - 1, true);
                 m_doc->switchTrackAudio(i - 1, true);
             }
+
             trackduration = slotAddProjectTrack(pos, p, m_doc->isTrackLocked(i - 1));
             pos--;
             //kDebug() << " PRO DUR: " << trackduration << ", TRACK DUR: " << duration;
@@ -309,7 +331,7 @@ void TrackView::parseDocument(QDomDocument doc)
                 Transition *tr = new Transition(transitionInfo, a_track, m_doc->fps(), base, isAutomatic);
                 if (forceTrack) tr->setForcedTrack(true, a_track);
                 m_scene->addItem(tr);
-                if (m_doc->isTrackLocked(b_track - 1)) {
+                if (b_track > 0 && m_doc->isTrackLocked(b_track - 1)) {
                     tr->setItemLocked(true);
                 }
             }