ItemInfo startInfo = clip->info();
ItemInfo endInfo = clip->info();
endInfo.endPos = GenTime(m_cursorPos, m_document->fps());
- if (endInfo.endPos <= startInfo.startPos || endInfo.endPos > startInfo.startPos + clip->maxDuration() - startInfo.cropStart) {
+ CLIPTYPE type = (CLIPTYPE) static_cast <ClipItem *> (clip)->clipType();
+ if (endInfo.endPos <= startInfo.startPos || (type != IMAGE && type != COLOR && type != TEXT && endInfo.endPos > startInfo.startPos + clip->maxDuration() - startInfo.cropStart)) {
// Check for invalid resize
emit displayMessage(i18n("Invalid action"), ErrorMessage);
return;
} else if (endInfo.endPos > startInfo.endPos) {
- int length = m_document->renderer()->mltGetSpaceLength(endInfo.endPos, m_document->tracksCount() - startInfo.track, false);
- if ((clip->type() == TRANSITIONWIDGET && itemCollision(clip, endInfo) == true) || (clip->type() == AVWIDGET && length < (endInfo.endPos - startInfo.endPos).frames(m_document->fps()))) {
+ int length = m_document->renderer()->mltGetSpaceLength(startInfo.endPos, m_document->tracksCount() - startInfo.track, false);
+ if ((clip->type() == TRANSITIONWIDGET && itemCollision(clip, endInfo) == true) || (clip->type() == AVWIDGET && length != -1 && length < (endInfo.endPos - startInfo.endPos).frames(m_document->fps()))) {
+ kDebug()<<" RESIZE ERROR, BLNK: "<<length<<", RESIZE: "<<(endInfo.endPos - startInfo.endPos).frames(m_document->fps());
emit displayMessage(i18n("Invalid action"), ErrorMessage);
return;
}
{
if (!m_mltProducer) {
kDebug() << "PLAYLIST NOT INITIALISED //////";
- return -1;
+ return 0;
}
Mlt::Producer parentProd(m_mltProducer->parent());
if (parentProd.get_producer() == NULL) {
kDebug() << "PLAYLIST BROKEN, CANNOT INSERT CLIP //////";
- return -1;
+ return 0;
}
Mlt::Service service(parentProd.get_service());
Mlt::Producer trackProducer(tractor.track(track));
Mlt::Playlist trackPlaylist((mlt_playlist) trackProducer.get_service());
int clipIndex = trackPlaylist.get_clip_index_at(insertPos);
- if (!trackPlaylist.is_blank(clipIndex)) return -1;
+ if (clipIndex == trackPlaylist.count()) {
+ // We are after the end of the playlist
+ return -1;
+ }
+ if (!trackPlaylist.is_blank(clipIndex)) return 0;
if (fromBlankStart) return trackPlaylist.clip_length(clipIndex);
return trackPlaylist.clip_length(clipIndex) + trackPlaylist.clip_start(clipIndex) - insertPos;
}