From: Jean-Baptiste Mardelle Date: Mon, 12 May 2008 20:28:19 +0000 (+0000) Subject: several transition move fixes X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=ff0bb42c6e2cffc73de72730c38526e4805e3e24;p=kdenlive several transition move fixes svn path=/branches/KDE4/; revision=2187 --- diff --git a/src/customtrackview.cpp b/src/customtrackview.cpp index 84c72c57..edae29e3 100644 --- a/src/customtrackview.cpp +++ b/src/customtrackview.cpp @@ -814,20 +814,21 @@ void CustomTrackView::mouseReleaseEvent(QMouseEvent * event) { info.endPos = m_dragItem->endPos(); info.track = m_dragItem->track(); - if (m_operationMode == MOVE && m_dragItemInfo.startPos != info.startPos) { + if (m_operationMode == MOVE) { setCursor(Qt::OpenHandCursor); // move clip - if (m_dragItem->type() == AVWIDGET) { + if (m_dragItem->type() == AVWIDGET && m_dragItemInfo.startPos != info.startPos) { MoveClipCommand *command = new MoveClipCommand(this, m_dragItemInfo, info, false); m_commandStack->push(command); m_document->renderer()->mltMoveClip((int)(m_tracksList.count() - m_dragItemInfo.track), (int)(m_tracksList.count() - m_dragItem->track()), (int) m_dragItemInfo.startPos.frames(m_document->fps()), (int)(m_dragItem->startPos().frames(m_document->fps()))); } - if (m_dragItem->type() == TRANSITIONWIDGET) { + if (m_dragItem->type() == TRANSITIONWIDGET && ( m_dragItemInfo.startPos != info.startPos || m_dragItemInfo.track != info.track )) { MoveTransitionCommand *command = new MoveTransitionCommand(this, m_dragItemInfo, info, false); m_commandStack->push(command); //kDebug()<<"/// MOVING TRS FROM: "<<(int)(m_tracksList.count() - m_startPos.y())<<", OFFSET: "<<(int) (m_dragItem->track() - m_startPos.y()); Transition *transition = (Transition *) m_dragItem; - m_document->renderer()->mltMoveTransition(transition->transitionTag(), (int)(m_tracksList.count() - m_dragItemInfo.track), (int)(m_tracksList.count() - m_dragItem->track()), getPreviousVideoTrack(m_dragItem->track()), m_dragItemInfo.startPos, m_dragItemInfo.endPos, info.startPos, info.endPos); + transition->updateTransitionEndTrack(getPreviousVideoTrack(m_dragItem->track())); + m_document->renderer()->mltMoveTransition(transition->transitionTag(), (int)(m_tracksList.count() - m_dragItemInfo.track), (int)(m_tracksList.count() - m_dragItem->track()), transition->transitionEndTrack(), m_dragItemInfo.startPos, m_dragItemInfo.endPos, info.startPos, info.endPos); } } else if (m_operationMode == RESIZESTART) { @@ -1000,7 +1001,8 @@ void CustomTrackView::moveTransition(const ItemInfo start, const ItemInfo end) { item->resizeEnd((int) end.endPos.frames(m_document->fps()), m_scale); } //item->moveTransition(GenTime((int) (endPos.x() - startPos.x()), m_document->fps())); - m_document->renderer()->mltMoveTransition(item->transitionTag(), m_tracksList.count() - start.track, m_tracksList.count() - end.track, getPreviousVideoTrack(end.track), start.startPos, start.endPos, end.startPos, end.endPos); + item->updateTransitionEndTrack(getPreviousVideoTrack(end.track)); + m_document->renderer()->mltMoveTransition(item->transitionTag(), m_tracksList.count() - start.track, m_tracksList.count() - end.track, item->transitionEndTrack(), start.startPos, start.endPos, end.startPos, end.endPos); } void CustomTrackView::resizeClip(const ItemInfo start, const ItemInfo end) { diff --git a/src/effectstackedit.cpp b/src/effectstackedit.cpp index 361e5f2e..429dc2a6 100644 --- a/src/effectstackedit.cpp +++ b/src/effectstackedit.cpp @@ -91,10 +91,12 @@ void EffectStackEdit::transferParamDesc(const QDomElement& d, int , int) { pa.setAttribute("min", "-200;-20;0;0;0"); pa.setAttribute("max", "200;200;100;100;100"); } - if (type == "complex") { + else if (type == "complex") { //pa.setAttribute("namedesc",pa.attribute("name")); } + + //TODO constant, list, bool, complex , color, geometry, position if (type == "double" || type == "constant") { createSliderItem(paramName, value.toInt(), pa.attribute("min").toInt(), pa.attribute("max").toInt()); diff --git a/src/transition.cpp b/src/transition.cpp index d776e721..f38cb52e 100644 --- a/src/transition.cpp +++ b/src/transition.cpp @@ -98,6 +98,10 @@ int Transition::transitionEndTrack() const { return m_transitionTrack; } +void Transition::updateTransitionEndTrack(int newtrack) { + m_transitionTrack = newtrack; +} + void Transition::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) { diff --git a/src/transition.h b/src/transition.h index b82ae755..65b91cd9 100644 --- a/src/transition.h +++ b/src/transition.h @@ -63,6 +63,8 @@ public: QPixmap transitionPixmap() const; //Transition *reparent(ClipItem * clip); bool isValid() const; + /** Transition should be linked to another track */ + void updateTransitionEndTrack(int newtrack); const ClipItem *referencedClip() const; diff --git a/src/transitionsettings.cpp b/src/transitionsettings.cpp index f1ed28c2..d93c430e 100644 --- a/src/transitionsettings.cpp +++ b/src/transitionsettings.cpp @@ -48,23 +48,29 @@ void TransitionSettings::slotTransitionChanged() { m_usedTransition->update(); } emit transitionUpdated(e, m_usedTransition->toXML());*/ + /*QDomDocument doc; + doc.appendChild(doc.importNode(e, true)); + kDebug()<<"/////////// TRANSITION CHANGED: "<transitionName() == ui.listWidget->currentItem()->text() && !e.attribute("tag").isNull()) { slotUpdateEffectParams(e, e); } else slotUpdateEffectParams(e, MainWindow::transitions.getEffectByName(ui.listWidget->currentItem()->text())); - emit transferParamDesc(m_usedTransition->toXML(), 0, 0); + emit transferParamDesc(e, 0, 0); } void TransitionSettings::slotTransitionItemSelected(Transition* t) { setEnabled(t != NULL); + if (t == m_usedTransition) return; m_usedTransition = t; if (m_usedTransition) { QList list = ui.listWidget->findItems(m_usedTransition->transitionName(), Qt::MatchExactly); if (list.size() > 0) { - disconnect(ui.listWidget, SIGNAL(currentRowChanged(int)), this, SLOT(slotTransitionChanged())); + ui.listWidget->blockSignals(true); ui.listWidget->setCurrentItem(list[0]); slotTransitionChanged(); - connect(ui.listWidget, SIGNAL(currentRowChanged(int)), this, SLOT(slotTransitionChanged())); + ui.listWidget->blockSignals(false); } } @@ -79,7 +85,7 @@ void TransitionSettings::slotUpdateEffectParams(const QDomElement& oldparam, con QTextStream str(&test); oldparam.save(str, 2); m_usedTransition->toXML().save(str, 2); - kDebug() << test; + //kDebug() << test; //oldparam must be also first given to Transition and then return the toXML() emit transitionUpdated(m_usedTransition, oldparam); }