From 782c551b31e70065bba295fbe894616b528f0b81 Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Mardelle Date: Sat, 11 Jun 2011 19:52:05 +0000 Subject: [PATCH] Fix missing icon for placeholder clips svn path=/trunk/kdenlive/; revision=5703 --- src/projectlist.cpp | 24 +++++++++++++++++++++++- src/projectlist.h | 7 ------- 2 files changed, 23 insertions(+), 8 deletions(-) diff --git a/src/projectlist.cpp b/src/projectlist.cpp index 2a2f51db..cddce5e8 100644 --- a/src/projectlist.cpp +++ b/src/projectlist.cpp @@ -500,6 +500,15 @@ void ProjectList::slotMissingClip(const QString &id) ProjectItem *item = getItemById(id); if (item) { item->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled | Qt::ItemIsDropEnabled); + int height = m_listView->iconSize().height(); + int width = (int)(height * m_render->dar()); + QPixmap pixmap = QPixmap(width, height); + pixmap.fill(Qt::transparent); + KIcon icon("dialog-close"); + QPainter p(&pixmap); + p.drawPixmap(3, 3, icon.pixmap(width - 6, height - 6)); + p.end(); + item->setData(0, Qt::DecorationRole, pixmap); if (item->referencedClip()) { item->referencedClip()->setPlaceHolder(true); if (m_render == NULL) kDebug() << "********* ERROR, NULL RENDR"; @@ -1130,6 +1139,15 @@ void ProjectList::updateAllClips(bool displayRatioChanged) DocClipBase *clip; ProjectItem *item; monitorItemEditing(false); + int height = m_listView->iconSize().height(); + int width = (int)(height * m_render->dar()); + QPixmap missingPixmap = QPixmap(width, height); + missingPixmap.fill(Qt::transparent); + KIcon icon("dialog-close"); + QPainter p(&missingPixmap); + p.drawPixmap(3, 3, icon.pixmap(width - 6, height - 6)); + p.end(); + while (*it) { if ((*it)->type() == PROJECTSUBCLIPTYPE) { // subitem @@ -1150,8 +1168,12 @@ void ProjectList::updateAllClips(bool displayRatioChanged) if (item->referencedClip()->producer() == NULL) { if (clip->isPlaceHolder() == false) requestClipInfo(clip->toXML(), clip->getId()); - else if (!clip->isPlaceHolder()) + else { item->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled | Qt::ItemIsDropEnabled); + if (item->data(0, Qt::DecorationRole).isNull()) { + item->setData(0, Qt::DecorationRole, missingPixmap); + } + } } else { if (displayRatioChanged || item->data(0, Qt::DecorationRole).isNull()) requestClipThumbnail(clip->getId()); diff --git a/src/projectlist.h b/src/projectlist.h index 7a9344cc..ab749372 100644 --- a/src/projectlist.h +++ b/src/projectlist.h @@ -84,13 +84,6 @@ public: } const int textMargin = style->pixelMetric(QStyle::PM_FocusFrameHMargin) + 1; QPixmap pixmap = qVariantValue(index.data(Qt::DecorationRole)); - if ((index.flags() & (Qt::ItemIsDragEnabled)) == false) { - KIcon icon("dialog-close"); - QPainter p(&pixmap); - p.drawPixmap(1, 1, icon.pixmap(16, 16)); - p.end(); - } - painter->drawPixmap(r1.left() + textMargin, r1.top() + (r1.height() - pixmap.height()) / 2, pixmap); int decoWidth = pixmap.width() + 2 * textMargin; -- 2.39.2