]> git.sesse.net Git - kdenlive/commitdiff
Correctly update monitor when changing a title clip duration
authorJean-Baptiste Mardelle <jb@kdenlive.org>
Sun, 4 Oct 2009 00:03:42 +0000 (00:03 +0000)
committerJean-Baptiste Mardelle <jb@kdenlive.org>
Sun, 4 Oct 2009 00:03:42 +0000 (00:03 +0000)
svn path=/trunk/kdenlive/; revision=3993

src/clipmanager.cpp
src/mainwindow.cpp
src/projectlist.cpp

index 874a0287fa1a5de5fea996dfe9efceefdddcd563..5a7109699f50893d5661bd0d0309baaf9e433789 100644 (file)
@@ -287,6 +287,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,6 +328,7 @@ 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);
index 73261a240238b66b12a4b24db43f2646f238660c..7990b3b6cd7da381bd0c7ad40687009866de81c9 100644 (file)
@@ -2343,7 +2343,10 @@ void MainWindow::slotShowClipProperties(DocClipBase *clip)
         if (dia_ui->exec() == QDialog::Accepted) {
             QMap <QString, QString> newprops;
             newprops.insert("xmldata", dia_ui->xml().toString());
-            newprops.insert("out", QString::number(dia_ui->duration()));
+            if (dia_ui->duration() != clip->duration().frames(m_activeDocument->fps()) - 1) {
+                // duration changed, we need to update duration
+                newprops.insert("out", QString::number(dia_ui->duration()));
+            }
             EditClipCommand *command = new EditClipCommand(m_projectList, clip->getId(), clip->properties(), newprops, true);
             m_activeDocument->commandStack()->push(command);
             m_activeTimeline->projectView()->slotUpdateClip(clip->getId());
index 45e67c85177c73cd3360ff3c47b69d6c94811270..af531d2565490be6ca812177ee7e0d9988c8f3ed 100644 (file)
@@ -314,11 +314,14 @@ void ProjectList::slotUpdateClipProperties(const QString &id, QMap <QString, QSt
     ProjectItem *item = getItemById(id);
     if (item) {
         slotUpdateClipProperties(item, properties);
-        if (properties.contains("colour") || properties.contains("resource") || properties.contains("xmldata") || properties.contains("force_aspect_ratio") || properties.contains("templatetext")) {
+        if (properties.contains("out")) {
+            slotReloadClip(id);
+            //item->changeDuration(properties.value("out").toInt());
+        }
+        else if (properties.contains("colour") || properties.contains("resource") || properties.contains("xmldata") || properties.contains("force_aspect_ratio") || properties.contains("templatetext")) {
             slotRefreshClipThumbnail(item);
             emit refreshClip();
         }
-        if (properties.contains("out")) item->changeDuration(properties.value("out").toInt());
     }
 }