From: Jean-Baptiste Mardelle Date: Sun, 1 Nov 2009 15:46:59 +0000 (+0000) Subject: Fix clip move in overwrite mode, fix crash in audio thumbs, X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=36427ae3327ff20a69949368e1940021a6dc3e68;p=kdenlive Fix clip move in overwrite mode, fix crash in audio thumbs, fix audio/video thumbs button not working in project settings: issue 1228 svn path=/trunk/kdenlive/; revision=4084 --- diff --git a/src/customtrackview.cpp b/src/customtrackview.cpp index 2c2ec67c..43c5af46 100644 --- a/src/customtrackview.cpp +++ b/src/customtrackview.cpp @@ -1753,7 +1753,7 @@ ClipItem *CustomTrackView::cutClip(ItemInfo info, GenTime cutTime, bool cut, boo item->baseClip()->addReference(); m_document->updateClip(item->baseClip()->getId()); setDocumentModified(); - KdenliveSettings::setSnaptopoints(snap); + KdenliveSettings::setSnaptopoints(snap); return dup; //kDebug() << "///////// CUTTING CLIP RESULT: (" << item->startPos().frames(25) << "-" << item->endPos().frames(25) << "), DUP: (" << dup->startPos().frames(25) << "-" << dup->endPos().frames(25) << ")" << ", CUT: " << cutTime.frames(25); } else { @@ -1779,7 +1779,7 @@ ClipItem *CustomTrackView::cutClip(ItemInfo info, GenTime cutTime, bool cut, boo bool snap = KdenliveSettings::snaptopoints(); KdenliveSettings::setSnaptopoints(false); - + if (dup->isSelected()) emit clipItemSelected(NULL); dup->baseClip()->removeReference(); m_document->updateClip(dup->baseClip()->getId()); @@ -1794,7 +1794,7 @@ ClipItem *CustomTrackView::cutClip(ItemInfo info, GenTime cutTime, bool cut, boo setDocumentModified(); } else emit displayMessage(i18n("Error when resizing clip"), ErrorMessage); - KdenliveSettings::setSnaptopoints(snap); + KdenliveSettings::setSnaptopoints(snap); return item; } @@ -2049,24 +2049,24 @@ void CustomTrackView::dropEvent(QDropEvent * event) m_commandStack->push(addCommand); setDocumentModified(); - /* - // debug info - QRectF rect(0, 1 * m_tracksHeight + m_tracksHeight / 2, sceneRect().width(), 2); - QList selection = m_scene->items(rect); - QStringList timelineList; - - kDebug()<<"// ITEMS on TRACK: "<type() == AVWIDGET) { - ClipItem *clip = static_cast (selection.at(i)); - int start = clip->startPos().frames(m_document->fps()); - int end = clip->endPos().frames(m_document->fps()); - timelineList.append(QString::number(start) + "-" + QString::number(end)); - } - } - kDebug() << "// COMPARE:\n" << timelineList << "\n-------------------"; - */ + /* + // debug info + QRectF rect(0, 1 * m_tracksHeight + m_tracksHeight / 2, sceneRect().width(), 2); + QList selection = m_scene->items(rect); + QStringList timelineList; + kDebug()<<"// ITEMS on TRACK: "<type() == AVWIDGET) { + ClipItem *clip = static_cast (selection.at(i)); + int start = clip->startPos().frames(m_document->fps()); + int end = clip->endPos().frames(m_document->fps()); + timelineList.append(QString::number(start) + "-" + QString::number(end)); + } + } + kDebug() << "// COMPARE:\n" << timelineList << "\n-------------------"; + */ + m_pasteEffectsAction->setEnabled(m_copiedItems.count() == 1); if (items.count() > 1) groupSelectedItems(true); event->setDropAction(Qt::MoveAction); @@ -2082,8 +2082,8 @@ void CustomTrackView::adjustTimelineClips(EDITMODE mode, ClipItem *item, ItemInf bool snap = KdenliveSettings::snaptopoints(); KdenliveSettings::setSnaptopoints(false); ItemInfo info; - if (item == NULL) info = posinfo; - else info = item->info(); + if (item == NULL) info = posinfo; + else info = item->info(); QRectF rect(info.startPos.frames(m_document->fps()), info.track * m_tracksHeight + m_tracksHeight / 2, (info.endPos - info.startPos).frames(m_document->fps()) - 1, 5); QList selection = m_scene->items(rect); if (item) selection.removeAll(item); @@ -2106,13 +2106,7 @@ void CustomTrackView::adjustTimelineClips(EDITMODE mode, ClipItem *item, ItemInf new RazorClipCommand(this, clipInfo, info.startPos, false, command); new ResizeClipCommand(this, dupInfo, newdupInfo, false, false, command); ClipItem *dup = cutClip(clipInfo, info.startPos, true, false); - if (dup) dup->resizeStart(info.endPos.frames(m_document->fps())); - kDebug() << "-----------------------------"; - - kDebug() << "///RES+CUT: " << dup->startPos().frames(25) << "x" << dup->endPos().frames(25); - kDebug() << "-----------------------------"; - - + if (dup) dup->resizeStart(info.endPos.frames(m_document->fps())); } else { ItemInfo newclipInfo = clip->info(); newclipInfo.endPos = info.startPos; @@ -3343,10 +3337,10 @@ void CustomTrackView::deleteClip(ItemInfo info, bool refresh) // animate item deletion if (refresh) item->closeAnimation(); else { - // no refresh, means we have several operations chained, we need to delete clip immediatly - // so that it does not get in the way of the other - delete item; - item = NULL; + // no refresh, means we have several operations chained, we need to delete clip immediatly + // so that it does not get in the way of the other + delete item; + item = NULL; } #else delete item; @@ -3420,7 +3414,7 @@ void CustomTrackView::deleteSelectedClips() else if (transitionCount > 0 && groupCount == 0 && clipCount == 0) deleteSelected->setText(i18np("Delete selected transition", "Delete selected transitions", transitionCount)); else deleteSelected->setText(i18n("Delete selected items")); - m_commandStack->push(deleteSelected); + m_commandStack->push(deleteSelected); } void CustomTrackView::changeClipSpeed() diff --git a/src/docclipbase.cpp b/src/docclipbase.cpp index 6a72de10..e6fbc754 100644 --- a/src/docclipbase.cpp +++ b/src/docclipbase.cpp @@ -82,7 +82,7 @@ DocClipBase::DocClipBase(ClipManager *clipManager, QDomElement xml, const QStrin //if (!url.isEmpty() && QFile::exists(url.path())) { m_thumbProd = new KThumb(clipManager, url, m_id, m_properties.value("file_hash")); - if (m_clipType == AV || m_clipType == AUDIO) slotCreateAudioTimer(); + if (m_clipType == AV || m_clipType == AUDIO || m_clipType == PLAYLIST) slotCreateAudioTimer(); } //kDebug() << "type is video" << (m_clipType == AV) << " " << m_clipType; } @@ -140,7 +140,7 @@ void DocClipBase::slotCreateAudioTimer() void DocClipBase::askForAudioThumbs() { - if (m_thumbProd) m_thumbProd->askForAudioThumbs(getId()); + if (m_thumbProd && m_audioTimer) slotGetAudioThumbs(); } void DocClipBase::slotClearAudioCache() @@ -191,7 +191,7 @@ void DocClipBase::setClipType(CLIPTYPE type) m_clipType = type; m_properties.insert("type", QString::number((int) type)); - if (m_thumbProd && m_audioTimer == NULL && (m_clipType == AV || m_clipType == AUDIO)) + if (m_thumbProd && m_audioTimer == NULL && (m_clipType == AV || m_clipType == AUDIO || m_clipType == PLAYLIST)) slotCreateAudioTimer(); } @@ -836,16 +836,15 @@ QMap DocClipBase::properties() const bool DocClipBase::slotGetAudioThumbs() { if (m_thumbProd == NULL) return false; - if (!KdenliveSettings::audiothumbnails()) { + if (!KdenliveSettings::audiothumbnails() || m_audioTimer == NULL) { if (m_audioTimer != NULL) m_audioTimer->stop(); return false; } if (m_audioThumbCreated) { - if (m_audioTimer != NULL) m_audioTimer->stop(); + m_audioTimer->stop(); return false; } - if (m_audioTimer != NULL) - m_audioTimer->start(1500); + m_audioTimer->start(1500); double lengthInFrames = duration().frames(KdenliveSettings::project_fps()); m_thumbProd->getAudioThumbs(2, 0, lengthInFrames /*must be number of frames*/, 20); return true; diff --git a/src/kthumb.cpp b/src/kthumb.cpp index d9a38f31..dcbb27ce 100644 --- a/src/kthumb.cpp +++ b/src/kthumb.cpp @@ -402,7 +402,7 @@ void KThumb::getAudioThumbs(int channel, double frame, double frameLength, int a if (m_audioThumbProducer.isRunning()) return; m_audioThumbProducer.init(m_url, m_thumbFile, frame, frameLength, m_frequency, m_channels, arrayWidth); m_audioThumbProducer.start(QThread::LowestPriority); - kDebug() << "STARTING GENERATE THMB FOR: " << m_url << " ................................"; + // kDebug() << "STARTING GENERATE THMB FOR: " <exec() != QDialog::Accepted) return; if (!KdenliveSettings::activatetabs()) closeCurrentDocument(); - KdenliveSettings::setVideothumbnails(w->enableVideoThumbs()); - m_buttonVideoThumbs->setChecked(KdenliveSettings::videothumbnails()); - KdenliveSettings::setAudiothumbnails(w->enableAudioThumbs()); - m_buttonAudioThumbs->setChecked(KdenliveSettings::audiothumbnails()); + if (KdenliveSettings::videothumbnails() != w->enableVideoThumbs()) slotSwitchVideoThumbs(); + if (KdenliveSettings::audiothumbnails() != w->enableAudioThumbs()) slotSwitchAudioThumbs(); profileName = w->selectedProfile(); projectFolder = w->selectedFolder(); projectTracks = w->tracks(); @@ -1788,6 +1786,8 @@ void MainWindow::slotEditProjectSettings() QString profile = w->selectedProfile(); m_activeDocument->setProjectFolder(w->selectedFolder()); if (m_renderWidget) m_renderWidget->setDocumentPath(w->selectedFolder().path(KUrl::AddTrailingSlash)); + if (KdenliveSettings::videothumbnails() != w->enableVideoThumbs()) slotSwitchVideoThumbs(); + if (KdenliveSettings::audiothumbnails() != w->enableAudioThumbs()) slotSwitchAudioThumbs(); if (m_activeDocument->profilePath() != profile) { // Profile was changed double dar = m_activeDocument->dar(); diff --git a/src/projectitem.cpp b/src/projectitem.cpp index 7efcef3d..7252867e 100644 --- a/src/projectitem.cpp +++ b/src/projectitem.cpp @@ -57,7 +57,7 @@ ProjectItem::ProjectItem(QTreeWidget * parent, DocClipBase *clip) : if (m_clipType != UNKNOWN) slotSetToolTip(); setText(1, name); setText(2, m_clip->description()); - if ((m_clip->clipType() == AV || m_clip->clipType() == AUDIO) && KdenliveSettings::audiothumbnails()) m_clip->askForAudioThumbs(); + m_clip->askForAudioThumbs(); GenTime duration = m_clip->duration(); if (duration != GenTime()) setData(1, DurationRole, Timecode::getEasyTimecode(duration, KdenliveSettings::project_fps())); //setFlags(Qt::NoItemFlags); @@ -76,7 +76,7 @@ ProjectItem::ProjectItem(QTreeWidgetItem * parent, DocClipBase *clip) : m_clipType = (CLIPTYPE) m_clip->getProperty("type").toInt(); setText(1, name); setText(2, m_clip->description()); - if ((m_clip->clipType() == AV || m_clip->clipType() == AUDIO) && KdenliveSettings::audiothumbnails()) m_clip->askForAudioThumbs(); + m_clip->askForAudioThumbs(); GenTime duration = m_clip->duration(); if (duration != GenTime()) setData(1, DurationRole, Timecode::getEasyTimecode(duration, KdenliveSettings::project_fps())); //setFlags(Qt::NoItemFlags); @@ -249,7 +249,7 @@ void ProjectItem::setProperties(const QMap < QString, QString > &attributes, con } m_clip->setProperties(attributes); m_clip->setMetadata(metadata); - if ((m_clipType == AV || m_clipType == AUDIO) && KdenliveSettings::audiothumbnails()) m_clip->askForAudioThumbs(); + m_clip->askForAudioThumbs(); if (m_clip->description().isEmpty()) { if (metadata.contains("description")) { diff --git a/src/renderer.cpp b/src/renderer.cpp index 0ece7e18..04aeffbf 100644 --- a/src/renderer.cpp +++ b/src/renderer.cpp @@ -2880,8 +2880,8 @@ bool Render::mltMoveClip(int startTrack, int endTrack, int moveStart, int moveEn if (overwrite) { destTrackPlaylist.remove_region(moveEnd, clip->get_playtime()); - int clipIndex = trackPlaylist.get_clip_index_at(moveEnd); - trackPlaylist.insert_blank(clipIndex, clip->get_playtime() - 1); + int clipIndex = destTrackPlaylist.get_clip_index_at(moveEnd); + destTrackPlaylist.insert_blank(clipIndex, clip->get_playtime() - 1); } int newIndex = destTrackPlaylist.insert_at(moveEnd, clip, 1);