]> git.sesse.net Git - kdenlive/commitdiff
Try to fix undoing of moving effects (up and down in effects list), also related to
authorJean-Baptiste Mardelle <jb@kdenlive.org>
Thu, 23 Oct 2008 18:15:07 +0000 (18:15 +0000)
committerJean-Baptiste Mardelle <jb@kdenlive.org>
Thu, 23 Oct 2008 18:15:07 +0000 (18:15 +0000)
http://www.kdenlive.org:80/mantis/view.php?id=236

svn path=/branches/KDE4/; revision=2546

src/customtrackview.cpp
src/customtrackview.h
src/effectstackview.cpp
src/effectstackview.h
src/mainwindow.cpp
src/trackview.cpp
src/trackview.h

index 4392af35f87ce055a5beabf78afeeec41e2ff723..56c1c3a1d8637d002651106eb3661b3139fe14c3 100644 (file)
@@ -897,6 +897,11 @@ void CustomTrackView::moveEffect(int track, GenTime pos, int oldPos, int newPos)
     ClipItem *clip = getClipItemAt((int)pos.frames(m_document->fps()) + 1, m_scene->m_tracksList.count() - track);
     if (clip) {
         m_document->renderer()->mltMoveEffect(track, pos, oldPos, newPos);
+        QDomElement act = clip->effectAt(newPos - 1).cloneNode().toElement();
+        QDomElement before = clip->effectAt(oldPos - 1).cloneNode().toElement();
+        clip->setEffectAt(oldPos - 1, act);
+        clip->setEffectAt(newPos - 1, before);
+        emit clipItemSelected(clip, newPos - 1);
     }
     m_document->setModified(true);
 }
index 269b49debd38f8f8e5f09d8404bd5b03886b1413..099fbb6da935a84bcf79a2dcf3b750adea12f4b0 100644 (file)
@@ -208,7 +208,7 @@ signals:
     void zoomIn();
     void zoomOut();
     void mousePosition(int);
-    void clipItemSelected(ClipItem*);
+    void clipItemSelected(ClipItem*, int ix = -1);
     void transitionItemSelected(Transition*);
     void activateDocumentMonitor();
     void trackHeightChanged();
index 1d2b40d4d4eca3bbbacabe9c42073df7612de473..ceb4a5ee3ddf525a86f674d1abe9d857eaf59002 100644 (file)
@@ -121,13 +121,13 @@ void EffectStackView::slotUpdateEffectParams(const QDomElement& old, const QDomE
         emit updateClipEffect(clipref, old, e, ui.effectlist->currentRow());
 }
 
-void EffectStackView::slotClipItemSelected(ClipItem* c) {
-    int ix = 0;
+void EffectStackView::slotClipItemSelected(ClipItem* c, int ix) {
     if (c && c == clipref) {
-        ix = ui.effectlist->currentRow();
+        if (ix == -1) ix = ui.effectlist->currentRow();
     } else {
         clipref = c;
         if (c) ix = c->selectedEffectIndex();
+        else ix = 0;
     }
     if (clipref == NULL) {
         ui.effectlist->clear();
@@ -199,29 +199,13 @@ void EffectStackView::slotItemSelectionChanged() {
 
 void EffectStackView::slotItemUp() {
     int activeRow = ui.effectlist->currentRow();
-    if (activeRow > 0) {
-        QDomElement act = clipref->effectAt(activeRow).cloneNode().toElement();
-        QDomElement before = clipref->effectAt(activeRow - 1).cloneNode().toElement();
-        clipref->setEffectAt(activeRow - 1, act);
-        clipref->setEffectAt(activeRow, before);
-    }
-    QListWidgetItem *item = ui.effectlist->takeItem(activeRow);
-    ui.effectlist->insertItem(activeRow - 1, item);
-    ui.effectlist->setCurrentItem(item);
+    if (activeRow <= 0) return;
     emit changeEffectPosition(clipref, activeRow + 1, activeRow);
 }
 
 void EffectStackView::slotItemDown() {
     int activeRow = ui.effectlist->currentRow();
-    if (activeRow < ui.effectlist->count() - 1) {
-        QDomElement act = clipref->effectAt(activeRow).cloneNode().toElement();
-        QDomElement after = clipref->effectAt(activeRow + 1).cloneNode().toElement();
-        clipref->setEffectAt(activeRow + 1, act);
-        clipref->setEffectAt(activeRow, after);
-    }
-    QListWidgetItem *item = ui.effectlist->takeItem(activeRow);
-    ui.effectlist->insertItem(activeRow + 1, item);
-    ui.effectlist->setCurrentItem(item);
+    if (activeRow >= ui.effectlist->count() - 1) return;
     emit changeEffectPosition(clipref, activeRow + 1, activeRow + 2);
 }
 
index 477e66756daaa00f006414e91accc2ef49f76dc0..18f453fa0e2c006954d23a6aba7ea855ecf72d9d 100644 (file)
@@ -44,7 +44,7 @@ private:
     //void updateButtonStatus();
 
 public slots:
-    void slotClipItemSelected(ClipItem*);
+    void slotClipItemSelected(ClipItem*, int ix);
     void slotUpdateEffectParams(const QDomElement&, const QDomElement&);
 
 private slots:
index 74998b14214ed5cf5020c9c46dab7f44fca5be46..b684b9497ae3bdf892ff47b26fc9b43fc9ec2f72 100644 (file)
@@ -1229,8 +1229,8 @@ void MainWindow::connectDocument(TrackView *trackView, KdenliveDoc *doc) { //cha
             disconnect(m_activeDocument, SIGNAL(updateClipDisplay(const QString &)), m_projectList, SLOT(slotUpdateClip(const QString &)));
             disconnect(m_activeDocument, SIGNAL(selectLastAddedClip(const QString &)), m_projectList, SLOT(slotSelectClip(const QString &)));
             disconnect(m_activeDocument, SIGNAL(deleteTimelineClip(const QString &)), m_activeTimeline, SLOT(slotDeleteClip(const QString &)));
-            disconnect(m_activeTimeline, SIGNAL(clipItemSelected(ClipItem*)), effectStack, SLOT(slotClipItemSelected(ClipItem*)));
-            disconnect(m_activeTimeline, SIGNAL(clipItemSelected(ClipItem*)), this, SLOT(slotActivateEffectStackView()));
+            disconnect(m_activeTimeline->projectView(), SIGNAL(clipItemSelected(ClipItem*, int)), effectStack, SLOT(slotClipItemSelected(ClipItem*, int)));
+            disconnect(m_activeTimeline->projectView(), SIGNAL(clipItemSelected(ClipItem*, int)), this, SLOT(slotActivateEffectStackView()));
             disconnect(m_activeTimeline, SIGNAL(transitionItemSelected(Transition*)), transitionConfig, SLOT(slotTransitionItemSelected(Transition*)));
             disconnect(m_activeTimeline, SIGNAL(transitionItemSelected(Transition*)), this, SLOT(slotActivateTransitionView()));
             disconnect(m_zoomSlider, SIGNAL(valueChanged(int)), m_activeTimeline, SLOT(slotChangeZoom(int)));
@@ -1279,8 +1279,8 @@ void MainWindow::connectDocument(TrackView *trackView, KdenliveDoc *doc) { //cha
     connect(doc, SIGNAL(guidesUpdated()), this, SLOT(slotGuidesUpdated()));
 
 
-    connect(trackView, SIGNAL(clipItemSelected(ClipItem*)), effectStack, SLOT(slotClipItemSelected(ClipItem*)));
-    connect(trackView, SIGNAL(clipItemSelected(ClipItem*)), this, SLOT(slotActivateEffectStackView()));
+    connect(trackView->projectView(), SIGNAL(clipItemSelected(ClipItem*, int)), effectStack, SLOT(slotClipItemSelected(ClipItem*, int)));
+    connect(trackView->projectView(), SIGNAL(clipItemSelected(ClipItem*, int)), this, SLOT(slotActivateEffectStackView()));
     connect(trackView, SIGNAL(transitionItemSelected(Transition*)), transitionConfig, SLOT(slotTransitionItemSelected(Transition*)));
     connect(trackView, SIGNAL(transitionItemSelected(Transition*)), this, SLOT(slotActivateTransitionView()));
     m_zoomSlider->setValue(doc->zoom());
index e28ddb8971473863538a171af8a5e11de08e9c76..68c2e39bfd4a58e432c4c4ed62a30dfe37837c23 100644 (file)
@@ -82,7 +82,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(clipItemSelected(ClipItem*)), this, SLOT(slotClipItemSelected(ClipItem*)));
     connect(m_trackview, SIGNAL(transitionItemSelected(Transition*)), this, SLOT(slotTransitionItemSelected(Transition*)));
     slotChangeZoom(m_doc->zoom());
 }
@@ -108,10 +107,6 @@ void TrackView::slotSetZone(QPoint p) {
     m_ruler->setZone(p);
 }
 
-void TrackView::slotClipItemSelected(ClipItem*c) {
-    emit clipItemSelected(c);
-}
-
 void TrackView::slotTransitionItemSelected(Transition *t) {
     emit transitionItemSelected(t);
 }
index 1981e73ee2d0ef3d8c6e161adc814afdc02231f3..fa202e28f07b2bbe663775b80b8b154ca11dcd4c 100644 (file)
@@ -89,7 +89,6 @@ private:
 private slots:
     void setCursorPos(int pos);
     void moveCursorPos(int pos);
-    void slotClipItemSelected(ClipItem*);
     void slotTransitionItemSelected(Transition*);
     void slotRebuildTrackHeaders();
 
@@ -97,7 +96,6 @@ private slots:
 signals:
     void mousePosition(int);
     void cursorMoved();
-    void clipItemSelected(ClipItem*);
     void transitionItemSelected(Transition*);
     void zoneMoved(int, int);
 };