From: Jean-Baptiste Mardelle Date: Mon, 15 Oct 2012 21:23:00 +0000 (+0200) Subject: Fix dropping of effect on group:http://kdenlive.org/mantis/view.php?id=2768 X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=d8f5d6bf150363b8807333a91b20a93be0a068f3;p=kdenlive Fix dropping of effect on group:http://kdenlive.org/mantis/view.php?id=2768 --- diff --git a/src/abstractgroupitem.cpp b/src/abstractgroupitem.cpp index eb3a14ed..2db8874e 100644 --- a/src/abstractgroupitem.cpp +++ b/src/abstractgroupitem.cpp @@ -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 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 diff --git a/src/customtrackview.cpp b/src/customtrackview.cpp index e97c46ad..d312842e 100644 --- a/src/customtrackview.cpp +++ b/src/customtrackview.cpp @@ -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 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(dropTarget)); + } } void CustomTrackView::slotAddEffect(ClipItem *clip, QDomElement effect) diff --git a/src/customtrackview.h b/src/customtrackview.h index 1f322854..c223016a 100644 --- a/src/customtrackview.h +++ b/src/customtrackview.h @@ -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);