]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/views/tooltips/tooltipmanager.cpp
Dolphin: Make Nepomuk Support Optional
[dolphin.git] / src / views / tooltips / tooltipmanager.cpp
index 3c262b7496f760856246f1575996bc899dfd2b49..bd6948363e58c94ce68afacc4ffb94d25b5b809e 100644 (file)
@@ -21,6 +21,7 @@
 
 #include "filemetadatatooltip.h"
 #include <KIcon>
+#include <KIO/JobUiDelegate>
 #include <KIO/PreviewJob>
 
 #include <QApplication>
@@ -44,9 +45,9 @@ ToolTipManager::ToolTipManager(QWidget* parent) :
     m_itemRect()
 {
     if (parent) {
-        m_margin = qMax(m_margin, parent->style()->pixelMetric(QStyle::PM_ToolTipLabelFrameWidth));        
+        m_margin = qMax(m_margin, parent->style()->pixelMetric(QStyle::PM_ToolTipLabelFrameWidth));
     }
-    
+
     m_showToolTipTimer = new QTimer(this);
     m_showToolTipTimer->setSingleShot(true);
     m_showToolTipTimer->setInterval(500);
@@ -103,7 +104,9 @@ void ToolTipManager::hideToolTip()
 
     if (m_fileMetaDataToolTip) {
         m_fileMetaDataToolTip->hide();
-        delete m_fileMetaDataToolTip;
+        // Do not delete the tool tip immediately to prevent crashes when
+        // QCoreApplication tries to deliver an 'Enter' event to it, see bug 310579.
+        m_fileMetaDataToolTip->deleteLater();
         m_fileMetaDataToolTip = 0;
     }
 }
@@ -126,7 +129,11 @@ void ToolTipManager::startContentRetrieval()
     // Request a preview of the item
     m_fileMetaDataToolTip->setPreview(QPixmap());
 
-    KIO::PreviewJob* job = KIO::filePreview(KFileItemList() << m_item, QSize(256, 256));
+    KIO::PreviewJob* job = new KIO::PreviewJob(KFileItemList() << m_item, QSize(256, 256));
+    job->setIgnoreMaximumSize(m_item.isLocalFile());
+    if (job->ui()) {
+        job->ui()->setWindow(qApp->activeWindow());
+    }
 
     connect(job, SIGNAL(gotPreview(KFileItem,QPixmap)),
             this, SLOT(setPreviewPix(KFileItem,QPixmap)));