]> git.sesse.net Git - kdenlive/commitdiff
Fix "Auto" track setting in transition config not working
authorJean-Baptiste Mardelle <jb@kdenlive.org>
Tue, 16 Jun 2009 00:08:50 +0000 (00:08 +0000)
committerJean-Baptiste Mardelle <jb@kdenlive.org>
Tue, 16 Jun 2009 00:08:50 +0000 (00:08 +0000)
svn path=/trunk/kdenlive/; revision=3544

src/customtrackview.cpp
src/customtrackview.h
src/edittransitioncommand.cpp
src/edittransitioncommand.h
src/mainwindow.cpp
src/trackview.cpp
src/trackview.h
src/transitionsettings.cpp
src/transitionsettings.h

index 12794173c721d7a0f6a29787efab268e901704b7..1904cd76880447d038f29b48a411fc9e03489478 100644 (file)
@@ -1675,7 +1675,7 @@ void CustomTrackView::updateTransition(int track, GenTime pos, QDomElement oldTr
             p.setX(size.section('x', 0, 0).toInt());
             p.setY(size.section('x', 1, 1).toInt());
         }
-        emit transitionItemSelected(item, p, true);
+        emit transitionItemSelected(item, getPreviousVideoTrack(info.track), p, true);
     }
     m_document->setModified(true);
 }
@@ -1853,7 +1853,7 @@ void CustomTrackView::removeTrack(int ix)
     m_document->renderer()->mltDeleteTrack(m_document->tracksCount() - ix);
     m_document->deleteTrack(m_document->tracksCount() - ix - 1);
 
-    double startY = ix * m_tracksHeight + 1 + m_tracksHeight / 2;
+    double startY = ix * (m_tracksHeight + 1) + m_tracksHeight / 2;
     QRectF r(0, startY, sceneRect().width(), sceneRect().height() - startY);
     QList<QGraphicsItem *> selection = m_scene->items(r);
 
@@ -1879,7 +1879,6 @@ void CustomTrackView::removeTrack(int ix)
             ClipItem *clip = static_cast <ClipItem *>(children.at(i));
             clip->updateItem();
             ItemInfo clipinfo = clip->info();
-            kDebug() << "// CLIP TRK IS: " << clipinfo.track;
             // We add a move clip command so that we get the correct producer for new track number
             if (clip->clipType() == AV || clip->clipType() == AUDIO) {
                 Mlt::Producer *prod;
@@ -2704,7 +2703,7 @@ void CustomTrackView::mouseReleaseEvent(QMouseEvent * event)
             p.setX(size.section('x', 0, 0).toInt());
             p.setY(size.section('x', 1, 1).toInt());
         }
-        emit transitionItemSelected(static_cast <Transition *>(m_dragItem), p);
+        emit transitionItemSelected(static_cast <Transition *>(m_dragItem), getPreviousVideoTrack(m_dragItem->track()), p);
     } else emit transitionItemSelected(NULL);
     if (m_operationMode != NONE && m_operationMode != MOVE) m_document->setModified(true);
     m_operationMode = NONE;
@@ -3247,7 +3246,16 @@ void CustomTrackView::moveTransition(const ItemInfo start, const ItemInfo end)
     KdenliveSettings::setSnaptopoints(snap);
     item->updateTransitionEndTrack(getPreviousVideoTrack(end.track));
     m_document->renderer()->mltMoveTransition(item->transitionTag(), m_document->tracksCount() - start.track, m_document->tracksCount() - end.track, item->transitionEndTrack(), start.startPos, start.endPos, end.startPos, end.endPos);
-    if (m_dragItem && m_dragItem == item) emit transitionItemSelected(item);
+    if (m_dragItem && m_dragItem == item) {
+        QPoint p;
+        ClipItem *transitionClip = getClipItemAt(item->startPos(), item->track());
+        if (transitionClip && transitionClip->baseClip()) {
+            QString size = transitionClip->baseClip()->getProperty("frame_size");
+            p.setX(size.section('x', 0, 0).toInt());
+            p.setY(size.section('x', 1, 1).toInt());
+        }
+        emit transitionItemSelected(item, getPreviousVideoTrack(item->track()), p);
+    }
 }
 
 void CustomTrackView::resizeClip(const ItemInfo start, const ItemInfo end)
@@ -4240,6 +4248,7 @@ void CustomTrackView::deleteTimelineTrack(int ix, TrackInfo trackinfo)
         }
     }
 
+    selection = m_scene->items();
     new AddTrackCommand(this, ix, trackinfo, false, deleteTrack);
     m_commandStack->push(deleteTrack);
 }
index 7e8a67e00ff1684152bc34010b569ab6057b9b22..6ece8977ed6d3a54ffef7d4e66f7582262440cd9 100644 (file)
@@ -260,7 +260,7 @@ signals:
     void zoomOut();
     void mousePosition(int);
     void clipItemSelected(ClipItem*, int ix = -1);
-    void transitionItemSelected(Transition*, QPoint p = QPoint(), bool update = false);
+    void transitionItemSelected(Transition*, int track = 0, QPoint p = QPoint(), bool update = false);
     void activateDocumentMonitor();
     void trackHeightChanged();
     void displayMessage(const QString, MessageType);
index ab88c3f0cd4e3af50437b52fe4aac58ed3d349fd..58346c4d802064a403ad0dd228c9bbacd590b219 100644 (file)
@@ -20,8 +20,8 @@
 
 #include <KLocale>
 
-EditTransitionCommand::EditTransitionCommand(CustomTrackView *view, const int track, GenTime pos, QDomElement oldeffect, QDomElement effect, bool doIt) :
-        QUndoCommand(),
+EditTransitionCommand::EditTransitionCommand(CustomTrackView *view, const int track, GenTime pos, QDomElement oldeffect, QDomElement effect, bool doIt, QUndoCommand * parent) :
+        QUndoCommand(parent),
         m_view(view),
         m_track(track),
         m_oldeffect(oldeffect),
index cd517c20b611946f2861c18e0ceff97fe11ca615..eb3e96bba3550bc9777a109d6cffb50dec0e4b64 100644 (file)
@@ -28,7 +28,7 @@ class CustomTrackView;
 class EditTransitionCommand : public QUndoCommand
 {
 public:
-    EditTransitionCommand(CustomTrackView *view, const int track, GenTime pos, QDomElement oldeffect, QDomElement effect, bool doIt);
+    EditTransitionCommand(CustomTrackView *view, const int track, GenTime pos, QDomElement oldeffect, QDomElement effect, bool doIt, QUndoCommand * parent = NULL);
 
     virtual int id() const;
     virtual bool mergeWith(const QUndoCommand * command);
index b9bb02d941a6c6717c5940c942611c7d274d7c99..7477b95d611c3bdd828e4a0415a010cdcb2aa025 100644 (file)
@@ -1282,7 +1282,7 @@ void MainWindow::closeCurrentDocument()
         delete m_activeDocument;
         m_activeDocument = NULL;
         m_effectStack->clear();
-        m_transitionConfig->slotTransitionItemSelected(NULL, QPoint(), false);
+        m_transitionConfig->slotTransitionItemSelected(NULL, 0, QPoint(), false);
     } else delete docToClose;
     if (w == m_activeTimeline) {
         delete m_activeTimeline;
@@ -1818,8 +1818,8 @@ void MainWindow::connectDocument(TrackView *trackView, KdenliveDoc *doc)   //cha
             disconnect(m_activeDocument, SIGNAL(deleteTimelineClip(const QString &)), m_activeTimeline, SLOT(slotDeleteClip(const QString &)));
             disconnect(m_activeTimeline->projectView(), SIGNAL(clipItemSelected(ClipItem*, int)), m_effectStack, SLOT(slotClipItemSelected(ClipItem*, int)));
             disconnect(m_activeTimeline->projectView(), SIGNAL(clipItemSelected(ClipItem*, int)), this, SLOT(slotActivateEffectStackView()));
-            disconnect(m_activeTimeline, SIGNAL(transitionItemSelected(Transition*, QPoint, bool)), m_transitionConfig, SLOT(slotTransitionItemSelected(Transition*, QPoint, bool)));
-            disconnect(m_activeTimeline, SIGNAL(transitionItemSelected(Transition*, QPoint, bool)), this, SLOT(slotActivateTransitionView(Transition *)));
+            disconnect(m_activeTimeline->projectView(), SIGNAL(transitionItemSelected(Transition*, int, QPoint, bool)), m_transitionConfig, SLOT(slotTransitionItemSelected(Transition*, int, QPoint, bool)));
+            disconnect(m_activeTimeline->projectView(), SIGNAL(transitionItemSelected(Transition*, int, QPoint, bool)), this, SLOT(slotActivateTransitionView(Transition *)));
             disconnect(m_zoomSlider, SIGNAL(valueChanged(int)), m_activeTimeline, SLOT(slotChangeZoom(int)));
             disconnect(m_activeTimeline->projectView(), SIGNAL(displayMessage(const QString&, MessageType)), m_messageLabel, SLOT(setMessage(const QString&, MessageType)));
             disconnect(m_activeTimeline->projectView(), SIGNAL(showClipFrame(DocClipBase *, const int)), m_clipMonitor, SLOT(slotSetXml(DocClipBase *, const int)));
@@ -1878,8 +1878,8 @@ void MainWindow::connectDocument(TrackView *trackView, KdenliveDoc *doc)   //cha
 
     connect(trackView->projectView(), SIGNAL(clipItemSelected(ClipItem*, int)), m_effectStack, SLOT(slotClipItemSelected(ClipItem*, int)));
     connect(trackView->projectView(), SIGNAL(clipItemSelected(ClipItem*, int)), this, SLOT(slotActivateEffectStackView()));
-    connect(trackView, SIGNAL(transitionItemSelected(Transition*, QPoint, bool)), m_transitionConfig, SLOT(slotTransitionItemSelected(Transition*, QPoint, bool)));
-    connect(trackView, SIGNAL(transitionItemSelected(Transition*, QPoint, bool)), this, SLOT(slotActivateTransitionView(Transition *)));
+    connect(trackView->projectView(), SIGNAL(transitionItemSelected(Transition*, int, QPoint, bool)), m_transitionConfig, SLOT(slotTransitionItemSelected(Transition*, int, QPoint, bool)));
+    connect(trackView->projectView(), SIGNAL(transitionItemSelected(Transition*, int, QPoint, bool)), this, SLOT(slotActivateTransitionView(Transition *)));
     m_zoomSlider->setValue(doc->zoom());
     connect(m_zoomSlider, SIGNAL(valueChanged(int)), trackView, SLOT(slotChangeZoom(int)));
     connect(trackView->projectView(), SIGNAL(zoomIn()), this, SLOT(slotZoomIn()));
index e93a0f6d18ce990f7949e57c75a3cce62280e292..5ed60171fe56cf1717e4f31edded022b2652008c 100644 (file)
@@ -84,7 +84,6 @@ TrackView::TrackView(KdenliveDoc *doc, QWidget *parent) :
     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)));
     connect(m_trackview, SIGNAL(mousePosition(int)), this, SIGNAL(mousePosition(int)));
-    connect(m_trackview, SIGNAL(transitionItemSelected(Transition*, QPoint, bool)), this, SLOT(slotTransitionItemSelected(Transition*, QPoint, bool)));
     connect(m_trackview, SIGNAL(doTrackLock(int, bool)), this, SLOT(slotChangeTrackLock(int, bool)));
 
     slotChangeZoom(m_doc->zoom());
@@ -117,11 +116,6 @@ void TrackView::slotSetZone(QPoint p)
     m_ruler->setZone(p);
 }
 
-void TrackView::slotTransitionItemSelected(Transition *t, QPoint p, bool update)
-{
-    emit transitionItemSelected(t, p, update);
-}
-
 void TrackView::setDuration(int dur)
 {
     m_trackview->setDuration(dur);
index 345190c575df6624f1224b6e874e2fc14e2c7e8b..5358fc1baaddba604cc54bd08eed87c521e1ecaa 100644 (file)
@@ -85,14 +85,12 @@ private:
 private slots:
     void setCursorPos(int pos);
     void moveCursorPos(int pos);
-    void slotTransitionItemSelected(Transition*, QPoint p, bool update);
     void slotRebuildTrackHeaders();
     void slotChangeTrackLock(int ix, bool lock);
 
 signals:
     void mousePosition(int);
     void cursorMoved();
-    void transitionItemSelected(Transition*, QPoint, bool);
     void zoneMoved(int, int);
     void insertTrack(int);
     void deleteTrack(int);
index 3b90e5a1d6f2ec945cf56c278d3a1258f055901b..f5e42c114b171e7b717110d0962369e92cefe837 100644 (file)
@@ -29,7 +29,8 @@
 TransitionSettings::TransitionSettings(QWidget* parent) :
         QWidget(parent),
         m_usedTransition(NULL),
-        m_tracksCount(0)
+        m_tracksCount(0),
+        m_autoTrackTransition(0)
 {
     m_ui.setupUi(this);
     m_effectEdit = new EffectStackEdit(m_ui.frame);
@@ -107,6 +108,7 @@ void TransitionSettings::slotTransitionTrackChanged()
         m_effectEdit->updateParameter("force_track", "1");
         emit transitionUpdated(m_usedTransition, oldxml);
     } else {
+        ix = m_autoTrackTransition;
         m_usedTransition->setForcedTrack(false, ix);
         m_effectEdit->updateParameter("force_track", "0");
         emit transitionUpdated(m_usedTransition, oldxml);
@@ -114,10 +116,11 @@ void TransitionSettings::slotTransitionTrackChanged()
     m_effectEdit->updateParameter("transition_btrack", QString::number(ix));
 }
 
-void TransitionSettings::slotTransitionItemSelected(Transition* t, QPoint p, bool update)
+void TransitionSettings::slotTransitionItemSelected(Transition* t, int nextTrack, QPoint p, bool update)
 {
     setEnabled(t != NULL);
     m_effectEdit->setFrameSize(p);
+    m_autoTrackTransition = nextTrack;
     if (t == m_usedTransition) {
         if (t == NULL) return;
         if (update) {
index 2d6be8bf58fac0b34f4dbb1113416d4223a83e5d..a78ed10584e7ce995a2708c8e422df3f0f2a8ff1 100644 (file)
@@ -43,9 +43,10 @@ private:
     GenTime m_transitionDuration;
     GenTime m_transitionStart;
     int m_tracksCount;
+    int m_autoTrackTransition;
 
 public slots:
-    void slotTransitionItemSelected(Transition*, QPoint, bool);
+    void slotTransitionItemSelected(Transition* t, int nextTrack, QPoint p, bool update);
     void slotTransitionChanged(bool reinit = true, bool updateCurrent = false);
     void slotUpdateEffectParams(const QDomElement&, const QDomElement&);