From: Jean-Baptiste Mardelle Date: Sun, 23 Jan 2011 16:54:23 +0000 (+0000) Subject: Fix timeline thumbs not reloaded on clip change: X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=59fc347313511ad63560b7c1a32b5c34c9b940f8;p=kdenlive Fix timeline thumbs not reloaded on clip change: http://kdenlive.org/mantis/view.php?id=1980 svn path=/trunk/kdenlive/; revision=5346 --- diff --git a/src/clipitem.cpp b/src/clipitem.cpp index e4b759bb..81768faa 100644 --- a/src/clipitem.cpp +++ b/src/clipitem.cpp @@ -529,6 +529,7 @@ void ClipItem::refreshClip(bool checkDuration) QString colour = m_clip->getProperty("colour"); colour = colour.replace(0, 2, "#"); m_baseColor = QColor(colour.left(7)); + update(); } else resetThumbs(checkDuration); } diff --git a/src/customtrackview.cpp b/src/customtrackview.cpp index c3906973..74afb07d 100644 --- a/src/customtrackview.cpp +++ b/src/customtrackview.cpp @@ -4058,7 +4058,6 @@ void CustomTrackView::slotUpdateClip(const QString &clipId, bool reload) emit displayMessage(i18n("Cannot update clip (time: %1, track: %2)", info.startPos.frames(m_document->fps()), info.track), ErrorMessage); } clip->refreshClip(true); - clip->update(); } } } @@ -6619,4 +6618,16 @@ void CustomTrackView::updateTrackDuration(int track, QUndoCommand *command) } } - +void CustomTrackView::slotRefreshThumbs(const QString &id) +{ + QList list = scene()->items(); + ClipItem *clip = NULL; + for (int i = 0; i < list.size(); ++i) { + if (list.at(i)->type() == AVWIDGET) { + clip = static_cast (list.at(i)); + if (clip->clipProducer() == id) { + clip->refreshClip(true); + } + } + } +} diff --git a/src/customtrackview.h b/src/customtrackview.h index 11e65110..6f0d6e6c 100644 --- a/src/customtrackview.h +++ b/src/customtrackview.h @@ -444,6 +444,8 @@ private slots: void slotGoToMarker(QAction *action); void slotResetMenuPosition(); void slotDoResetMenuPosition(); + /** @brief Re-create the clip thumbnails. */ + void slotRefreshThumbs(const QString &id); signals: void cursorMoved(int, int); diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index 34ecc812..fe2eb9df 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -2404,11 +2404,12 @@ void MainWindow::connectDocument(TrackView *trackView, KdenliveDoc *doc) //cha disconnect(m_projectList, SIGNAL(displayMessage(const QString&, int)), this, SLOT(slotGotProgressInfo(const QString&, int))); disconnect(m_projectList, SIGNAL(updateRenderStatus()), this, SLOT(slotCheckRenderStatus())); disconnect(m_projectList, SIGNAL(clipNeedsReload(const QString&, bool)), m_activeTimeline->projectView(), SLOT(slotUpdateClip(const QString &, bool))); + disconnect(m_projectList, SIGNAL(refreshClip(const QString &)), m_activeTimeline->projectView(), SLOT(slotRefreshThumbs(const QString &))); m_effectStack->clear(); } //m_activeDocument->setRenderer(NULL); disconnect(m_projectList, SIGNAL(clipSelected(DocClipBase *)), m_clipMonitor, SLOT(slotSetXml(DocClipBase *))); - disconnect(m_projectList, SIGNAL(refreshClip()), m_monitorManager, SLOT(slotRefreshCurrentMonitor())); + disconnect(m_projectList, SIGNAL(refreshClip(const QString &)), m_monitorManager, SLOT(slotRefreshCurrentMonitor())); m_clipMonitor->stop(); } KdenliveSettings::setCurrent_profile(doc->profilePath()); @@ -2418,7 +2419,8 @@ void MainWindow::connectDocument(TrackView *trackView, KdenliveDoc *doc) //cha m_transitionConfig->updateProjectFormat(doc->mltProfile(), doc->timecode(), doc->tracksList()); m_effectStack->updateProjectFormat(doc->mltProfile(), doc->timecode()); connect(m_projectList, SIGNAL(clipSelected(DocClipBase *, QPoint)), m_clipMonitor, SLOT(slotSetXml(DocClipBase *, QPoint))); - connect(m_projectList, SIGNAL(refreshClip()), m_monitorManager, SLOT(slotRefreshCurrentMonitor())); + connect(m_projectList, SIGNAL(refreshClip(const QString &)), m_monitorManager, SLOT(slotRefreshCurrentMonitor())); + connect(m_projectList, SIGNAL(refreshClip(const QString &)), trackView->projectView(), SLOT(slotRefreshThumbs(const QString &))); connect(m_projectList, SIGNAL(clipNeedsReload(const QString&, bool)), trackView->projectView(), SLOT(slotUpdateClip(const QString &, bool))); connect(m_projectList, SIGNAL(projectModified()), doc, SLOT(setModified())); diff --git a/src/projectlist.cpp b/src/projectlist.cpp index e2411e9f..e0666e3d 100644 --- a/src/projectlist.cpp +++ b/src/projectlist.cpp @@ -629,9 +629,9 @@ void ProjectList::slotUpdateClipProperties(const QString &id, QMap folderids); void findInTimeline(const QString &clipId);