]> git.sesse.net Git - kdenlive/blobdiff - src/clipitem.cpp
Fix handling of project tree folders
[kdenlive] / src / clipitem.cpp
index 71687d87a8e13c4eb592c5b55af72a926f03988c..6835d41912d0c2d81a8092f1a2d6d9da0fa32ef8 100644 (file)
@@ -116,6 +116,7 @@ ClipItem::ClipItem(DocClipBase *clip, ItemInfo info, double fps, double speed, i
 ClipItem::~ClipItem()
 {
     blockSignals(true);
+    if (scene()) scene()->removeItem(this);
     if (m_clipType == VIDEO || m_clipType == AV || m_clipType == SLIDESHOW || m_clipType == PLAYLIST) {
         disconnect(m_clip->thumbProducer(), SIGNAL(thumbReady(int, QImage)), this, SLOT(slotThumbReady(int, QImage)));
         disconnect(m_clip, SIGNAL(gotAudioData()), this, SLOT(slotGotAudioData()));
@@ -1172,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();
@@ -1195,7 +1197,9 @@ 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);
                                 return pos();
                             }
@@ -1204,6 +1208,7 @@ QVariant ClipItem::itemChange(GraphicsItemChange change, const QVariant &value)
 
                     m_info.track = newTrack;
                     m_info.startPos = GenTime((int) newPos.x(), m_fps);
+
                     return newPos;
                 }
             }
@@ -1567,7 +1572,7 @@ void ClipItem::setAudioOnly(bool force)
             colour = colour.replace(0, 2, "#");
             m_baseColor = QColor(colour.left(7));
         } else if (m_clipType == AUDIO) m_baseColor = QColor(141, 215, 166);
-       else m_baseColor = QColor(141, 166, 215);
+        else m_baseColor = QColor(141, 166, 215);
     }
     m_audioThumbCachePic.clear();
 }