X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Ftransition.cpp;h=10b03740654832b42f6e922008552fe18fc08410;hb=586a53156d66e03617bba4c9bc70a24b3eee7ad6;hp=faca57f41cbabc19785497dd4abc1941fe2026c3;hpb=d7a6993a720e685d921bbf9d715789307e79effe;p=kdenlive diff --git a/src/transition.cpp b/src/transition.cpp index faca57f4..10b03740 100644 --- a/src/transition.cpp +++ b/src/transition.cpp @@ -40,9 +40,21 @@ Transition::Transition(const ItemInfo info, int transitiontrack, double fps, QDo { setZValue(3); m_info.cropDuration = info.endPos - info.startPos; - setRect(0, 0, m_info.cropDuration.frames(fps) - 0.02, (qreal)(KdenliveSettings::trackheight() / 3 * 2 - 1)); setPos(info.startPos.frames(fps), (qreal)(info.track * KdenliveSettings::trackheight() + KdenliveSettings::trackheight() / 3 * 2)); +#if QT_VERSION >= 0x040600 + m_startAnimation = new QPropertyAnimation(this, "rect"); + m_startAnimation->setDuration(200); + QRectF r(0, 0, m_info.cropDuration.frames(fps) - 0.02, 1); + QRectF r2(0, 0, m_info.cropDuration.frames(fps) - 0.02, (qreal)(KdenliveSettings::trackheight() / 3 * 2 - 1)); + m_startAnimation->setStartValue(r); + m_startAnimation->setEndValue(r2); + m_startAnimation->setEasingCurve(QEasingCurve::OutQuad); + m_startAnimation->start(); +#else + setRect(0, 0, m_info.cropDuration.frames(fps) - 0.02, (qreal)(KdenliveSettings::trackheight() / 3 * 2 - 1)); +#endif + m_info.cropStart = GenTime(); m_maxDuration = GenTime(600); @@ -66,6 +78,11 @@ Transition::Transition(const ItemInfo info, int transitiontrack, double fps, QDo Transition::~Transition() { + blockSignals(true); +#if QT_VERSION >= 0x040600 + delete m_startAnimation; +#endif + if (scene()) scene()->removeItem(this); } Transition *Transition::clone() @@ -194,6 +211,10 @@ int Transition::type() const //virtual QVariant Transition::itemChange(GraphicsItemChange change, const QVariant &value) { + if (change == QGraphicsItem::ItemSelectedChange) { + if (value.toBool()) setZValue(10); + else setZValue(3); + } if (change == ItemPositionChange && scene()) { // calculate new position. QPointF newPos = value.toPointF(); @@ -214,6 +235,7 @@ QVariant Transition::itemChange(GraphicsItemChange change, const QVariant &value if (!items.isEmpty()) { for (int i = 0; i < items.count(); i++) { + if (!items.at(i)->isEnabled()) continue; if (items.at(i)->type() == type()) { // Collision! Don't move. //kDebug()<<"/// COLLISION WITH ITEM: "<boundingRect()<<", POS: "<pos()<<", ME: "<