From: Jean-Baptiste Mardelle Date: Thu, 23 Oct 2008 18:15:07 +0000 (+0000) Subject: Try to fix undoing of moving effects (up and down in effects list), also related to X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=ef1cdedcc9367dc0f8caad2a025071489f68fe77;p=kdenlive Try to fix undoing of moving effects (up and down in effects list), also related to http://www.kdenlive.org:80/mantis/view.php?id=236 svn path=/branches/KDE4/; revision=2546 --- diff --git a/src/customtrackview.cpp b/src/customtrackview.cpp index 4392af35..56c1c3a1 100644 --- a/src/customtrackview.cpp +++ b/src/customtrackview.cpp @@ -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); } diff --git a/src/customtrackview.h b/src/customtrackview.h index 269b49de..099fbb6d 100644 --- a/src/customtrackview.h +++ b/src/customtrackview.h @@ -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(); diff --git a/src/effectstackview.cpp b/src/effectstackview.cpp index 1d2b40d4..ceb4a5ee 100644 --- a/src/effectstackview.cpp +++ b/src/effectstackview.cpp @@ -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); } diff --git a/src/effectstackview.h b/src/effectstackview.h index 477e6675..18f453fa 100644 --- a/src/effectstackview.h +++ b/src/effectstackview.h @@ -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: diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index 74998b14..b684b949 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -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()); diff --git a/src/trackview.cpp b/src/trackview.cpp index e28ddb89..68c2e39b 100644 --- a/src/trackview.cpp +++ b/src/trackview.cpp @@ -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); } diff --git a/src/trackview.h b/src/trackview.h index 1981e73e..fa202e28 100644 --- a/src/trackview.h +++ b/src/trackview.h @@ -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); };