]> git.sesse.net Git - kdenlive/commitdiff
Fix improper group deletion
authorTill Theato <root@ttill.de>
Sun, 30 May 2010 16:54:26 +0000 (16:54 +0000)
committerTill Theato <root@ttill.de>
Sun, 30 May 2010 16:54:26 +0000 (16:54 +0000)
svn path=/trunk/kdenlive/; revision=4490

src/customtrackview.cpp
src/customtrackview.h

index 3ada9543f49d948cb1a525f29135c588a7ec73cb..31b9cbc7da967c04f3c8ae1920a2c91a0475c1fb 100644 (file)
@@ -1462,6 +1462,11 @@ void CustomTrackView::insertClipCut(DocClipBase *clip, int in, int out)
 
     AddTimelineClipCommand *command = new AddTimelineClipCommand(this, clip->toXML(), clip->getId(), pasteInfo, EffectsList(), m_scene->editMode() == OVERWRITEEDIT, m_scene->editMode() == INSERTEDIT, true, false);
     m_commandStack->push(command);
+
+    selectClip(true, false);
+    // Automatic audio split
+    if (KdenliveSettings::splitaudio())
+        splitAudio();
 }
 
 bool CustomTrackView::insertDropClips(const QMimeData *data, const QPoint pos)
@@ -3671,7 +3676,6 @@ void CustomTrackView::deleteSelectedClips()
         if (itemList.at(i)->type() == GROUPWIDGET) {
             groupCount++;
             QList<QGraphicsItem *> children = itemList.at(i)->childItems();
-            itemList += children;
             QList <ItemInfo> clipInfos;
             QList <ItemInfo> transitionInfos;
             GenTime currentPos = GenTime(m_cursorPos, m_document->fps());
@@ -3683,10 +3687,17 @@ void CustomTrackView::deleteSelectedClips()
                     AbstractClipItem *clip = static_cast <AbstractClipItem *>(children.at(j));
                     if (!clip->isItemLocked()) transitionInfos.append(clip->info());
                 }
+                if (itemList.contains(children.at(j))) {
+                    children.removeAt(j);
+                    j--;
+                }
             }
+            itemList += children;
             if (clipInfos.count() > 0)
                 new GroupClipsCommand(this, clipInfos, transitionInfos, false, deleteSelected);
-        }
+
+        } else if (itemList.at(i)->parentItem() && itemList.at(i)->parentItem()->type() == GROUPWIDGET)
+            itemList.insert(i + 1, itemList.at(i)->parentItem());
     }
 
     for (int i = 0; i < itemList.count(); i++) {
index 519376c75ea1f1d9c8b1a1064fa0f67e46370b12..91543cb8a23f37b8551334914d89763d41986929 100644 (file)
@@ -106,6 +106,7 @@ public:
     void setDocumentModified();
     void setInPoint();
     void setOutPoint();
+
     /** @brief Prepares inserting space.
     *
     * Shows a dialog to configure length and track. */
@@ -119,6 +120,7 @@ public:
     void autoTransition();
     QStringList getLadspaParams(QDomElement effect) const;
     void initCursorPos(int pos);
+
     /** @brief Locks or unlocks a track.
     * @param ix number of track
     * @param lock whether to lock or unlock
@@ -141,6 +143,7 @@ public:
     int selectedTrack() const;
     QStringList selectedClips() const;
     QList<ClipItem *> selectedClipItems() const;
+
     /** @brief Selects a clip.
     * @param add Whether to select or deselect
     * @param group (optional) Whether to add the clip to a group
@@ -150,6 +153,13 @@ public:
     void selectTransition(bool add, bool group = false);
     QStringList extractTransitionsLumas();
     void setEditMode(EDITMODE mode);
+
+    /** @brief Inserts @param clip.
+    * @param clip The clip to insert
+    * @param in The inpoint of the clip (crop from start)
+    * @param out The outpoint of the clip (crop from end)
+    *
+    * Inserts at the position of timeline cursor and selected track. */
     void insertClipCut(DocClipBase *clip, int in, int out);
     void clearSelection();
     void editItemDuration();