]> git.sesse.net Git - kdenlive/blobdiff - src/clipmanager.cpp
Fix crash on clip deletion, fix issues with placeholder clips
[kdenlive] / src / clipmanager.cpp
index 0e8133f459a33dea7f56ce6d66a6091741c403e8..ff27251a3e763e61925c13e56ef0f619d823e59f 100644 (file)
@@ -50,6 +50,7 @@ ClipManager::~ClipManager()
 {
     kDebug() << "\n\n 2222222222222222222222222  CLOSE CM 22222222222";
     qDeleteAll(m_clipList);
+    m_clipList.clear();
 }
 
 void ClipManager::clear()
@@ -274,7 +275,7 @@ void ClipManager::slotAddClipList(const KUrl::List urls, const QString group, co
                 prod.setAttribute("type", (int) IMAGE);
                 prod.setAttribute("in", 0);
                 prod.setAttribute("out", m_doc->getFramePos(KdenliveSettings::image_duration()) - 1);
-            } else if (type->name() == "application/x-kdenlivetitle") {
+            } else if (type->is("application/x-kdenlivetitle")) {
                 // opening a title file
                 QDomDocument txtdoc("titledocument");
                 QFile txtfile(file.path());
@@ -287,6 +288,7 @@ void ClipManager::slotAddClipList(const KUrl::List urls, const QString group, co
                     prod.setAttribute("in", 0);
                     int out = txtdoc.documentElement().attribute("out").toInt();
                     if (out > 0) prod.setAttribute("out", out);
+                    else prod.setAttribute("out", m_doc->getFramePos(KdenliveSettings::image_duration()) - 1);
                 } else txtfile.close();
             }
             new AddClipCommand(m_doc, doc.documentElement(), QString::number(id), true, addClips);
@@ -327,12 +329,14 @@ void ClipManager::slotAddClipFile(const KUrl url, const QString group, const QSt
             prod.setAttribute("in", 0);
             int out = (int) outPos.frames(m_doc->fps());
             if (out > 0) prod.setAttribute("out", out);
+            else prod.setAttribute("out", m_doc->getFramePos(KdenliveSettings::image_duration()) - 1);
         } else txtfile.close();
     }
     AddClipCommand *command = new AddClipCommand(m_doc, doc.documentElement(), QString::number(id), true);
     m_doc->commandStack()->push(command);
 }
 
+
 void ClipManager::slotAddColorClipFile(const QString name, const QString color, QString duration, const QString group, const QString &groupId)
 {
     QDomDocument doc;
@@ -519,3 +523,9 @@ void ClipManager::slotClipModified(const QString &path)
     }
 }
 
+int ClipManager::clipsCount() const
+{
+    return m_clipList.count();
+}
+
+