From: Jean-Baptiste Mardelle Date: Fri, 28 Dec 2012 03:11:07 +0000 (+0100) Subject: Fix moving of grouped clips (not finished yet) X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=5851418c916125ba31d5f51518fe92c916bb9ef0;p=kdenlive Fix moving of grouped clips (not finished yet) --- diff --git a/src/abstractgroupitem.cpp b/src/abstractgroupitem.cpp index e9a30c85..a2e04b60 100644 --- a/src/abstractgroupitem.cpp +++ b/src/abstractgroupitem.cpp @@ -53,7 +53,20 @@ int AbstractGroupItem::type() const int AbstractGroupItem::track() const { - return (int)(scenePos().y() / KdenliveSettings::trackheight()); + //return (int)(scenePos().y() / KdenliveSettings::trackheight()); + int topTrack = -1; + QList children = childItems(); + for (int i = 0; i < children.count(); ++i) { + if (children.at(i)->type() == GROUPWIDGET) { + children.append(children.at(i)->childItems()); + continue; + } + AbstractClipItem *item = static_cast (children.at(i)); + if (item && (topTrack == -1 || topTrack > item->track())) { + topTrack = item->track(); + } + } + return topTrack; } void AbstractGroupItem::setItemLocked(bool locked) @@ -186,7 +199,9 @@ QVariant AbstractGroupItem::itemChange(GraphicsItemChange change, const QVariant currentTrack = static_cast (children.at(i))->track(); if (!groupTracks.contains(currentTrack)) groupTracks.append(currentTrack); } - else if (children.at(i)->type() == GROUPWIDGET) 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) { @@ -202,7 +217,7 @@ QVariant AbstractGroupItem::itemChange(GraphicsItemChange change, const QVariant QList subchildren = children.at(i)->childItems(); bool clipGroup = false; for (int j = 0; j < subchildren.count(); j++) { - if (subchildren.at(j)->type() == AVWIDGET) { + if (subchildren.at(j)->type() == AVWIDGET || subchildren.at(j)->type() == TRANSITIONWIDGET) { int subTrack = static_cast (subchildren.at(j))->track(); if (!groupTracks.contains(subTrack)) groupTracks.append(subTrack); clipGroup = true;