]> git.sesse.net Git - kdenlive/commitdiff
Fix deletion animation with Qt 4.6
authorJean-Baptiste Mardelle <jb@kdenlive.org>
Tue, 3 Nov 2009 12:26:36 +0000 (12:26 +0000)
committerJean-Baptiste Mardelle <jb@kdenlive.org>
Tue, 3 Nov 2009 12:26:36 +0000 (12:26 +0000)
svn path=/trunk/kdenlive/; revision=4089

src/abstractclipitem.cpp
src/clipitem.cpp
src/customtrackview.cpp
src/transition.cpp

index a9aec95ff3382602e5d04b9bcd79101483ae08df..5b990206630a4f9138e4c94dc692232b0e7b5711 100644 (file)
@@ -58,7 +58,8 @@ void AbstractClipItem::closeAnimation()
 {
 #if QT_VERSION >= 0x040600
     if (m_closeAnimation) return;
-    m_closeAnimation = new QPropertyAnimation(this, "geometry");
+    setEnabled(false);
+    m_closeAnimation = new QPropertyAnimation(this, "rect");
     connect(m_closeAnimation, SIGNAL(finished()), this, SLOT(deleteLater()));
     m_closeAnimation->setDuration(200);
     QRectF r = rect();
@@ -196,6 +197,7 @@ void AbstractClipItem::resizeEnd(int posx)
     if (durationDiff > GenTime()) {
         QList <QGraphicsItem *> collisionList = collidingItems(Qt::IntersectsItemBoundingRect);
         for (int i = 0; i < collisionList.size(); ++i) {
+           if (!collisionList.at(i)->isEnabled()) continue;
             QGraphicsItem *item = collisionList.at(i);
             if (item->type() == type() && item->pos().x() > pos().x()) {
                 kDebug() << "/////////  COLLISION DETECTED!!!!!!!!!";
index befec3a43cfced6e57abf8523385c07d79567f0b..9687020986b6957b583db02fda0eeb18981dfff1 100644 (file)
@@ -1173,6 +1173,7 @@ QVariant ClipItem::itemChange(GraphicsItemChange change, const QVariant &value)
         int offset = 0;
         if (!items.isEmpty()) {
             for (int i = 0; i < items.count(); i++) {
+               if (!items.at(i)->isEnabled()) continue;
                 if (items.at(i)->type() == type()) {
                     // Collision!
                     QPointF otherPos = items.at(i)->pos();
@@ -1196,6 +1197,7 @@ QVariant ClipItem::itemChange(GraphicsItemChange change, const QVariant &value)
                         QList<QGraphicsItem*> subitems = scene()->items(sceneShape, Qt::IntersectsItemShape);
                         subitems.removeAll(this);
                         for (int j = 0; j < subitems.count(); j++) {
+                           if (!subitems.at(j)->isEnabled()) continue;
                             if (subitems.at(j)->type() == type()) {
                                 // move was not successful, revert to previous pos
                                 m_info.startPos = GenTime((int) pos().x(), m_fps);
index 43c5af46d8c79f3f1ad9f846d217cf139061f798..2fcad0ac7e1a142ea8108379a8371906ff331e9f 100644 (file)
@@ -2088,6 +2088,7 @@ void CustomTrackView::adjustTimelineClips(EDITMODE mode, ClipItem *item, ItemInf
         QList<QGraphicsItem *> selection = m_scene->items(rect);
         if (item) selection.removeAll(item);
         for (int i = 0; i < selection.count(); i++) {
+           if (!selection.at(i)->isEnabled()) continue;
             if (selection.at(i)->type() == AVWIDGET) {
                 ClipItem *clip = static_cast<ClipItem *>(selection.at(i));
                 if (clip->startPos() < info.startPos) {
@@ -2142,6 +2143,7 @@ void CustomTrackView::adjustTimelineTransitions(EDITMODE mode, Transition *item,
         QList<QGraphicsItem *> selection = m_scene->items(rect);
         selection.removeAll(item);
         for (int i = 0; i < selection.count(); i++) {
+           if (!selection.at(i)->isEnabled()) continue;
             if (selection.at(i)->type() == TRANSITIONWIDGET) {
                 Transition *tr = static_cast<Transition *>(selection.at(i));
                 if (tr->startPos() < info.startPos) {
@@ -3335,13 +3337,14 @@ void CustomTrackView::deleteClip(ItemInfo info, bool refresh)
     if (m_dragItem == item) m_dragItem = NULL;
 #if QT_VERSION >= 0x040600
     // animate item deletion
-    if (refresh) item->closeAnimation();
+    item->closeAnimation();
+    /*if (refresh) item->closeAnimation();
     else {
        // no refresh, means we have several operations chained, we need to delete clip immediatly 
        // so that it does not get in the way of the other
        delete item;
        item = NULL;
-    }
+    }*/
 #else
     delete item;
     item = NULL;
@@ -3622,6 +3625,7 @@ ClipItem *CustomTrackView::getClipItemAtEnd(GenTime pos, int track)
     QList<QGraphicsItem *> list = scene()->items(QPointF(framepos - 1, track * m_tracksHeight + m_tracksHeight / 2));
     ClipItem *clip = NULL;
     for (int i = 0; i < list.size(); i++) {
+       if (!list.at(i)->isEnabled()) continue;
         if (list.at(i)->type() == AVWIDGET) {
             ClipItem *test = static_cast <ClipItem *>(list.at(i));
             if (test->endPos() == pos) clip = test;
@@ -3636,6 +3640,7 @@ ClipItem *CustomTrackView::getClipItemAtStart(GenTime pos, int track)
     QList<QGraphicsItem *> list = scene()->items(QPointF(pos.frames(m_document->fps()), track * m_tracksHeight + m_tracksHeight / 2));
     ClipItem *clip = NULL;
     for (int i = 0; i < list.size(); i++) {
+       if (!list.at(i)->isEnabled()) continue;
         if (list.at(i)->type() == AVWIDGET) {
             ClipItem *test = static_cast <ClipItem *>(list.at(i));
             if (test->startPos() == pos) clip = test;
@@ -3651,6 +3656,7 @@ ClipItem *CustomTrackView::getClipItemAt(int pos, int track)
     QList<QGraphicsItem *> list = scene()->items(p);
     ClipItem *clip = NULL;
     for (int i = 0; i < list.size(); i++) {
+       if (!list.at(i)->isEnabled()) continue;
         if (list.at(i)->type() == AVWIDGET) {
             clip = static_cast <ClipItem *>(list.at(i));
             break;
@@ -3670,6 +3676,7 @@ Transition *CustomTrackView::getTransitionItemAt(int pos, int track)
     QList<QGraphicsItem *> list = scene()->items(p);
     Transition *clip = NULL;
     for (int i = 0; i < list.size(); i++) {
+       if (!list.at(i)->isEnabled()) continue;
         if (list.at(i)->type() == TRANSITIONWIDGET) {
             clip = static_cast <Transition *>(list.at(i));
             break;
@@ -3690,6 +3697,7 @@ Transition *CustomTrackView::getTransitionItemAtEnd(GenTime pos, int track)
     QList<QGraphicsItem *> list = scene()->items(p);
     Transition *clip = NULL;
     for (int i = 0; i < list.size(); i++) {
+       if (!list.at(i)->isEnabled()) continue;
         if (list.at(i)->type() == TRANSITIONWIDGET) {
             Transition *test = static_cast <Transition *>(list.at(i));
             if (test->endPos() == pos) clip = test;
@@ -3705,6 +3713,7 @@ Transition *CustomTrackView::getTransitionItemAtStart(GenTime pos, int track)
     QList<QGraphicsItem *> list = scene()->items(p);
     Transition *clip = NULL;
     for (int i = 0; i < list.size(); ++i) {
+       if (!list.at(i)->isEnabled()) continue;
         if (list.at(i)->type() == TRANSITIONWIDGET) {
             Transition *test = static_cast <Transition *>(list.at(i));
             if (test->startPos() == pos) clip = test;
index 1c5b3ce3dca376bf96d52bad7d686406948ce5f8..a322f068dc204727308e738cc706e8e19e58d76e 100644 (file)
@@ -231,6 +231,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: "<<items.at(i)->boundingRect()<<", POS: "<<items.at(i)->pos()<<", ME: "<<newPos;