http://kdenlive.org/mantis/view.php?id=2905
bool CustomTrackView::insertDropClips(const QMimeData *data, const QPoint &pos)
{
bool CustomTrackView::insertDropClips(const QMimeData *data, const QPoint &pos)
{
- if (data->hasFormat("kdenlive/clip")) {
- m_clipDrag = true;
- m_scene->clearSelection();
- resetSelectionGroup(false);
+ QPointF framePos = mapToScene(pos);
+ int track = framePos.y() / KdenliveSettings::trackheight();
+ m_scene->clearSelection();
+ m_dragItem = NULL;
+ resetSelectionGroup(false);
+ m_clipDrag = data->hasFormat("kdenlive/clip") || data->hasFormat("kdenlive/producerslist");
+ // This is not a clip drag, maybe effect or other...
+ if (!m_clipDrag) return false;
+ if (track < 0 || track > m_document->tracksCount() - 1 || m_document->trackInfoAt(m_document->tracksCount() - track - 1).isLocked) return true;
+ if (data->hasFormat("kdenlive/clip")) {
QStringList list = QString(data->data("kdenlive/clip")).split(';');
DocClipBase *clip = m_document->getBaseClip(list.at(0));
if (clip == NULL) {
QStringList list = QString(data->data("kdenlive/clip")).split(';');
DocClipBase *clip = m_document->getBaseClip(list.at(0));
if (clip == NULL) {
emit displayMessage(i18n("Clip not ready"), ErrorMessage);
return false;
}
emit displayMessage(i18n("Clip not ready"), ErrorMessage);
return false;
}
- QPointF framePos = mapToScene(pos);
ItemInfo info;
info.startPos = GenTime();
info.cropStart = GenTime(list.at(1).toInt(), m_document->fps());
ItemInfo info;
info.startPos = GenTime();
info.cropStart = GenTime(list.at(1).toInt(), m_document->fps());
QList <GenTime> offsetList;
offsetList.append(info.endPos);
updateSnapPoints(NULL, offsetList);
QList <GenTime> offsetList;
offsetList.append(info.endPos);
updateSnapPoints(NULL, offsetList);
+ QStringList lockedTracks;
+ for (int i = 0; i < m_document->tracksCount(); i++) {
+ if (m_document->trackInfoAt(i).isLocked) lockedTracks << QString::number(m_document->tracksCount() - i - 1);
+ }
+ m_selectionGroup->setProperty("locked_tracks", lockedTracks);
m_selectionGroup->setPos(framePos);
scene()->addItem(m_selectionGroup);
m_selectionGroup->setSelected(true);
m_selectionGroup->setPos(framePos);
scene()->addItem(m_selectionGroup);
m_selectionGroup->setSelected(true);
} else if (data->hasFormat("kdenlive/producerslist")) {
} else if (data->hasFormat("kdenlive/producerslist")) {
QStringList ids = QString(data->data("kdenlive/producerslist")).split(';');
QStringList ids = QString(data->data("kdenlive/producerslist")).split(';');
- m_scene->clearSelection();
- resetSelectionGroup(false);
QList <GenTime> offsetList;
QList <ItemInfo> infoList;
QList <GenTime> offsetList;
QList <ItemInfo> infoList;
- QPointF framePos = mapToScene(pos);
GenTime start = GenTime((int)(framePos.x() + 0.5), m_document->fps());
int track = (int)(framePos.y() / m_tracksHeight);
framePos.setX((int)(framePos.x() + 0.5));
GenTime start = GenTime((int)(framePos.x() + 0.5), m_document->fps());
int track = (int)(framePos.y() / m_tracksHeight);
framePos.setX((int)(framePos.x() + 0.5));
}
if (m_selectionGroup) {
}
if (m_selectionGroup) {
- m_selectionGroup->setPos(framePos);
m_selectionGroup->setProperty("locked_tracks", lockedTracks);
m_selectionGroup->setProperty("locked_tracks", lockedTracks);
+ m_selectionGroup->setPos(framePos);
scene()->addItem(m_selectionGroup);
}
else if (m_dragItem) {
scene()->addItem(m_selectionGroup);
}
else if (m_dragItem) {
- m_dragItem->setPos(framePos);
m_dragItem->setProperty("locked_tracks", lockedTracks);
m_dragItem->setProperty("locked_tracks", lockedTracks);
+ m_dragItem->setPos(framePos);
scene()->addItem(m_dragItem);
}
//m_selectionGroup->setZValue(10);
m_thumbsTimer.start();
scene()->addItem(m_dragItem);
}
//m_selectionGroup->setZValue(10);
m_thumbsTimer.start();
- return true;
-
- } else {
- // the drag is not a clip (may be effect, ...)
- m_clipDrag = false;
- return false;