]> git.sesse.net Git - kdenlive/commitdiff
When adding transition, calculate optimal duration
authorJean-Baptiste Mardelle <jb@kdenlive.org>
Sun, 8 Jun 2008 21:40:07 +0000 (21:40 +0000)
committerJean-Baptiste Mardelle <jb@kdenlive.org>
Sun, 8 Jun 2008 21:40:07 +0000 (21:40 +0000)
svn path=/branches/KDE4/; revision=2237

src/customtrackview.cpp
src/trackview.cpp

index 83a1f4f850875b2d7ddf7c2763951a7c7dae0b0a..42cb28a069c8c0923df72349627cf8cb5e548d91 100644 (file)
@@ -437,17 +437,28 @@ void CustomTrackView::mousePressEvent(QMouseEvent * event) {
                 if (m_operationMode == TRANSITIONSTART) {
                     ItemInfo info;
                     info.startPos = m_dragItem->startPos();
-                    info.endPos = info.startPos + GenTime(2.5);
                     info.track = m_dragItem->track();
-                    int transitiontrack = getPreviousVideoTrack(info.track);
+                                       int transitiontrack = getPreviousVideoTrack(info.track);
+                                       ClipItem *transitionClip = NULL;
+                                       if (transitiontrack != 0) transitionClip = getClipItemAt((int) info.startPos.frames(m_document->fps()), m_tracksList.count() - transitiontrack);
+                                       if (transitionClip && transitionClip->endPos() < m_dragItem->endPos()) {
+                                               info.endPos = transitionClip->endPos();
+                                       }
+                    else info.endPos = info.startPos + GenTime(2.5);
+                    
                     slotAddTransition((ClipItem *) m_dragItem, info, transitiontrack);
                 }
                 if (m_operationMode == TRANSITIONEND) {
                     ItemInfo info;
                     info.endPos = m_dragItem->endPos();
-                    info.startPos = info.endPos - GenTime(2.5);
                     info.track = m_dragItem->track();
                     int transitiontrack = getPreviousVideoTrack(info.track);
+                                       ClipItem *transitionClip = NULL;
+                                       if (transitiontrack != 0) transitionClip = getClipItemAt((int) info.endPos.frames(m_document->fps()), m_tracksList.count() - transitiontrack);
+                                       if (transitionClip && transitionClip->startPos() > m_dragItem->startPos()) {
+                                               info.startPos = transitionClip->startPos();
+                                       }
+                    else info.startPos = info.endPos - GenTime(2.5);
                     slotAddTransition((ClipItem *) m_dragItem, info, transitiontrack);
                 }
                 updateSnapPoints(m_dragItem);
index 680577fbad1beb45b82f15178d5c0437652b9fa0..c8f7266dcba8ca2e7cc29066118db4f1304df1b5 100644 (file)
@@ -18,8 +18,6 @@
  ***************************************************************************/
 
 
-#include <QMouseEvent>
-#include <QStylePainter>
 #include <QScrollBar>
 
 #include <KDebug>