]> git.sesse.net Git - kdenlive/commitdiff
Fix dropping of effect on group:http://kdenlive.org/mantis/view.php?id=2768
authorJean-Baptiste Mardelle <jb@kdenlive.org>
Mon, 15 Oct 2012 21:23:00 +0000 (23:23 +0200)
committerJean-Baptiste Mardelle <jb@kdenlive.org>
Mon, 15 Oct 2012 21:23:00 +0000 (23:23 +0200)
src/abstractgroupitem.cpp
src/customtrackview.cpp
src/customtrackview.h

index eb3a14ed1522dd354a04dd81530041faabcd20f3..2db8874eadb9929a966d56d056a3534439e13a6c 100644 (file)
@@ -361,7 +361,16 @@ void AbstractGroupItem::dropEvent(QGraphicsSceneDragDropEvent * event)
     QDomElement e = doc.documentElement();
     e.setAttribute("kdenlive_ix", 0);
     CustomTrackView *view = (CustomTrackView *) scene()->views()[0];
-    if (view) view->slotAddGroupEffect(e, this);
+    QPointF dropPos = event->scenePos();
+    QList<QGraphicsItem *> selection = scene()->items(dropPos);
+    AbstractClipItem *dropChild = NULL;
+    for (int i = 0; i < selection.count(); i++) {
+       if (selection.at(i)->type() == AVWIDGET) {
+            dropChild = (AbstractClipItem *) selection.at(i);
+           break;
+        }
+    }           
+    if (view) view->slotAddGroupEffect(e, this, dropChild);
 }
 
 //virtual
index e97c46ad1183331f5dfad70592709d921bc0f330..d312842ede1c5dd860bc7ea33ce084ee452628a7 100644 (file)
@@ -1782,7 +1782,7 @@ void CustomTrackView::deleteEffect(int track, GenTime pos, QDomElement effect)
     }
 }
 
-void CustomTrackView::slotAddGroupEffect(QDomElement effect, AbstractGroupItem *group)
+void CustomTrackView::slotAddGroupEffect(QDomElement effect, AbstractGroupItem *group, AbstractClipItem *dropTarget)
 {
     QList<QGraphicsItem *> itemList = group->childItems();
     QUndoCommand *effectCommand = new QUndoCommand();
@@ -1821,6 +1821,12 @@ void CustomTrackView::slotAddGroupEffect(QDomElement effect, AbstractGroupItem *
         m_commandStack->push(effectCommand);
         setDocumentModified();
     } else delete effectCommand;
+    if (dropTarget) {
+       clearSelection(false);
+       m_dragItem = dropTarget;
+       m_dragItem->setSelected(true);
+       emit clipItemSelected(static_cast<ClipItem *>(dropTarget));
+    }
 }
 
 void CustomTrackView::slotAddEffect(ClipItem *clip, QDomElement effect)
index 1f322854a481ad9acea0e726faea4152b31571bf..c223016abb54983092ed471ae62072a93de5215c 100644 (file)
@@ -81,7 +81,7 @@ public:
     void deleteClip(const QString &clipId);
     /** @brief Add effect to current clip */
     void slotAddEffect(QDomElement effect, GenTime pos, int track);
-    void slotAddGroupEffect(QDomElement effect, AbstractGroupItem *group);
+    void slotAddGroupEffect(QDomElement effect, AbstractGroupItem *group, AbstractClipItem *dropTarget = NULL);
     void addEffect(int track, GenTime pos, QDomElement effect);
     void deleteEffect(int track, GenTime pos, QDomElement effect);
     void updateEffect(int track, GenTime pos, QDomElement insertedEffect, bool refreshEffectStack = false);