]> git.sesse.net Git - kdenlive/commitdiff
Fix missing icon for placeholder clips
authorJean-Baptiste Mardelle <jb@kdenlive.org>
Sat, 11 Jun 2011 19:52:05 +0000 (19:52 +0000)
committerJean-Baptiste Mardelle <jb@kdenlive.org>
Sat, 11 Jun 2011 19:52:05 +0000 (19:52 +0000)
svn path=/trunk/kdenlive/; revision=5703

src/projectlist.cpp
src/projectlist.h

index 2a2f51db52abc18d69b7031226b74c2915e9eabb..cddce5e83c53e59a01b21625e5ddf0e241e0bce5 100644 (file)
@@ -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());
index 7a9344cce789438df3128c0f2ccd45b1a4d86df7..ab749372163fdb451fbf64a7aa676dec6f43e274 100644 (file)
@@ -84,13 +84,6 @@ public:
             }
             const int textMargin = style->pixelMetric(QStyle::PM_FocusFrameHMargin) + 1;
             QPixmap pixmap = qVariantValue<QPixmap>(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;