[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: [kdenlive/Applications/16.12] src/timeline: Fix bug in ungroup (locked clip )
From: Jean-Baptiste Mardelle <jb () kdenlive ! org>
Date: 2016-12-04 16:55:38
Message-ID: E1cDa4g-00008M-Dz () code ! kde ! org
[Download RAW message or body]
Git commit d212d92068e8e40ff26014043d1b7f73104a92fd by Jean-Baptiste Mardelle.
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/customtrackview.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 = itemList.count();
for (int i = 0; i < max; ++i) {
- if (itemList.at(i)->type() == GroupWidget && itemList.at(i) != m_selectionGroup) {
- if (!existingGroups.contains(itemList.at(i))) {
- existingGroups << itemList.at(i);
+ QGraphicsItem *item = itemList.at(i);
+ if (item->type() == GroupWidget && item != m_selectionGroup) {
+ if (!existingGroups.contains(item)) {
+ existingGroups << item;
}
- itemList += itemList.at(i)->childItems();
+ itemList += item->childItems();
+ } else if (item->parentItem() && item->parentItem()->type() == GroupWidget) {
+ AbstractGroupItem *grp = static_cast <AbstractGroupItem *>(item->parentItem());
+ itemList += grp->childItems();
}
}
-
+ QList <AbstractClipItem *> processedClips;
for (int i = 0; i < itemList.count(); ++i) {
if (itemList.at(i)->type() == AVWidget) {
AbstractClipItem *clip = static_cast <AbstractClipItem *>(itemList.at(i));
- if (forceLock || !clip->isItemLocked()) clipInfos.append(clip->info());
+ if (!processedClips.contains(clip) && (forceLock || !clip->isItemLocked())) {
+ clipInfos.append(clip->info());
+ processedClips << clip;
+ }
} else if (itemList.at(i)->type() == TransitionWidget) {
AbstractClipItem *clip = static_cast <AbstractClipItem *>(itemList.at(i));
- if (forceLock || !clip->isItemLocked()) transitionInfos.append(clip->info());
+ if (!processedClips.contains(clip) && (forceLock || !clip->isItemLocked())) {
+ transitionInfos.append(clip->info());
+ processedClips << clip;
+ }
}
}
if (clipInfos.count() > 0) {
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic