[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