From kde-commits Sun Dec 04 16:55:38 2016 From: Jean-Baptiste Mardelle Date: Sun, 04 Dec 2016 16:55:38 +0000 To: kde-commits Subject: [kdenlive/Applications/16.12] src/timeline: Fix bug in ungroup (locked clip ) Message-Id: X-MARC-Message: https://marc.info/?l=kde-commits&m=148087055127655 Git commit d212d92068e8e40ff26014043d1b7f73104a92fd by Jean-Baptiste Mardel= le. Committed on 04/12/2016 at 16:11. Pushed by mardelle into branch 'Applications/16.12'. Fix bug in ungroup (locked clip ) M +17 -7 src/timeline/customtrackview.cpp https://commits.kde.org/kdenlive/d212d92068e8e40ff26014043d1b7f73104a92fd diff --git a/src/timeline/customtrackview.cpp b/src/timeline/customtrackvie= w.cpp index fbbc4d4..67b1052 100644 --- a/src/timeline/customtrackview.cpp +++ b/src/timeline/customtrackview.cpp @@ -4404,21 +4404,31 @@ void CustomTrackView::groupClips(bool group, QList<= QGraphicsItem *> itemList, bo // Expand groups int max =3D itemList.count(); for (int i =3D 0; i < max; ++i) { - if (itemList.at(i)->type() =3D=3D GroupWidget && itemList.at(i) != =3D m_selectionGroup) { - if (!existingGroups.contains(itemList.at(i))) { - existingGroups << itemList.at(i); + QGraphicsItem *item =3D itemList.at(i); + if (item->type() =3D=3D GroupWidget && item !=3D m_selectionGroup)= { + if (!existingGroups.contains(item)) { + existingGroups << item; } - itemList +=3D itemList.at(i)->childItems(); + itemList +=3D item->childItems(); + } else if (item->parentItem() && item->parentItem()->type() =3D=3D= GroupWidget) { + AbstractGroupItem *grp =3D static_cast (i= tem->parentItem()); + itemList +=3D grp->childItems(); } } - + QList processedClips; for (int i =3D 0; i < itemList.count(); ++i) { if (itemList.at(i)->type() =3D=3D AVWidget) { AbstractClipItem *clip =3D static_cast (it= emList.at(i)); - if (forceLock || !clip->isItemLocked()) clipInfos.append(clip-= >info()); + if (!processedClips.contains(clip) && (forceLock || !clip->isI= temLocked())) { + clipInfos.append(clip->info()); + processedClips << clip; + } } else if (itemList.at(i)->type() =3D=3D TransitionWidget) { AbstractClipItem *clip =3D static_cast (it= emList.at(i)); - if (forceLock || !clip->isItemLocked()) transitionInfos.append= (clip->info()); + if (!processedClips.contains(clip) && (forceLock || !clip->isI= temLocked())) { + transitionInfos.append(clip->info()); + processedClips << clip; + } } } if (clipInfos.count() > 0) {