]> git.sesse.net Git - kdenlive/commitdiff
Fix snaping for spacer tool:
authorJean-Baptiste Mardelle <jb@kdenlive.org>
Thu, 30 Jul 2009 15:36:32 +0000 (15:36 +0000)
committerJean-Baptiste Mardelle <jb@kdenlive.org>
Thu, 30 Jul 2009 15:36:32 +0000 (15:36 +0000)
http://kdenlive.org/mantis/view.php?id=1064

svn path=/trunk/kdenlive/; revision=3784

src/customtrackview.cpp

index c0df9e9a7d0b7f4ba1451c81eaf78553e403144f..d33f2d2edac8de49d84ca41bfc6431bc8ac7abf9 100644 (file)
@@ -732,10 +732,36 @@ void CustomTrackView::mousePressEvent(QMouseEvent * event)
                 kDebug() << "SELELCTING ELEMENTS WITHIN =" << event->pos().x() << "/" <<  1 << ", " << mapFromScene(sceneRect().width(), 0).x() - event->pos().x() << "/" << sceneRect().height();
             }
 
+            QList <GenTime> offsetList;
             for (int i = 0; i < selection.count(); i++) {
-                if (selection.at(i)->type() == AVWIDGET || selection.at(i)->type() == TRANSITIONWIDGET || selection.at(i)->type() == GROUPWIDGET) {
+                if (selection.at(i)->type() == AVWIDGET || selection.at(i)->type() == TRANSITIONWIDGET) {
+                    AbstractClipItem *item = static_cast<AbstractClipItem *>(selection.at(i));
+                    offsetList.append(item->startPos());
+                    offsetList.append(item->endPos());
                     selection.at(i)->setSelected(true);
                 }
+                if (selection.at(i)->type() == GROUPWIDGET) {
+                    QList<QGraphicsItem *> children = selection.at(i)->childItems();
+                    for (int j = 0; j < children.count(); j++) {
+                        AbstractClipItem *item = static_cast<AbstractClipItem *>(children.at(j));
+                        offsetList.append(item->startPos());
+                        offsetList.append(item->endPos());
+                    }
+                    selection.at(i)->setSelected(true);
+                }
+            }
+
+            if (!offsetList.isEmpty()) {
+                qSort(offsetList);
+                QList <GenTime> cleandOffsetList;
+                GenTime startOffset = offsetList.takeFirst();
+                for (int k = 0; k < offsetList.size(); k++) {
+                    GenTime newoffset = offsetList.at(k) - startOffset;
+                    if (newoffset != GenTime() && !cleandOffsetList.contains(newoffset)) {
+                        cleandOffsetList.append(newoffset);
+                    }
+                }
+                updateSnapPoints(NULL, cleandOffsetList, true);
             }
             groupSelectedItems(true);
             m_operationMode = SPACER;