From: Jean-Baptiste Mardelle Date: Fri, 26 Oct 2012 10:27:05 +0000 (+0200) Subject: Fix moving of grouped clips in tracks:http://kdenlive.org/mantis/view.php?id=2670 X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=d7937111a5566523b67e1fe3e10d91c9a51c718b;p=kdenlive Fix moving of grouped clips in tracks:http://kdenlive.org/mantis/view.php?id=2670 --- diff --git a/src/abstractclipitem.h b/src/abstractclipitem.h index 8703c919..1cdcf0cb 100644 --- a/src/abstractclipitem.h +++ b/src/abstractclipitem.h @@ -94,7 +94,6 @@ public: protected: ItemInfo m_info; -// int m_track; /** The position of the current keyframe when it has moved */ int m_editedKeyframe; /** The position of the current keyframe before it was moved */ diff --git a/src/abstractgroupitem.cpp b/src/abstractgroupitem.cpp index 2db8874e..f2a475f6 100644 --- a/src/abstractgroupitem.cpp +++ b/src/abstractgroupitem.cpp @@ -32,6 +32,7 @@ #include #include + AbstractGroupItem::AbstractGroupItem(double /* fps */) : QObject(), QGraphicsItemGroup() @@ -168,22 +169,18 @@ QVariant AbstractGroupItem::itemChange(GraphicsItemChange change, const QVariant //kDebug()<<"GRP XPOS:"<tracksCount() - (int)(boundingRect().height() + 5) / trackHeight); - correctedTrack = qMax(correctedTrack, 0); - - proposedTrack += (correctedTrack - realTrack); + int yOffset = property("y_absolute").toInt() + newPos.y(); + int proposedTrack = yOffset / trackHeight; // Check if top item is a clip or a transition int offset = 0; int topTrack = -1; QList children = childItems(); for (int i = 0; i < children.count(); i++) { - int currentTrack = (int)(children.at(i)->scenePos().y() / trackHeight); + int currentTrack = 0; + if (children.at(i)->type() == AVWIDGET || children.at(i)->type() == TRANSITIONWIDGET) currentTrack = static_cast (children.at(i))->track(); + else if (children.at(i)->type() == GROUPWIDGET) currentTrack = static_cast (children.at(i))->track(); + else continue; if (children.at(i)->type() == AVWIDGET) { if (topTrack == -1 || currentTrack <= topTrack) { offset = 0; diff --git a/src/customtrackview.cpp b/src/customtrackview.cpp index f4aa85ff..d78def43 100644 --- a/src/customtrackview.cpp +++ b/src/customtrackview.cpp @@ -810,6 +810,7 @@ void CustomTrackView::mousePressEvent(QMouseEvent * event) found = true; m_dragItem->setProperty("y_absolute", mapToScene(m_clickEvent).y() - m_dragItem->scenePos().y()); m_dragItemInfo = m_dragItem->info(); + if (m_selectionGroup) m_selectionGroup->setProperty("y_absolute", mapToScene(m_clickEvent).y() - m_dragItem->scenePos().y()); if (m_dragItem->parentItem() && m_dragItem->parentItem()->type() == GROUPWIDGET && m_dragItem->parentItem() != m_selectionGroup) { // kDebug()<<"// KLIK FOUND GRP: "<sceneBoundingRect(); dragGroup = static_cast (m_dragItem->parentItem());