]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/views/tooltips/tooltipmanager.cpp
Allow compiling Dolphin with KF5
[dolphin.git] / src / views / tooltips / tooltipmanager.cpp
index 3c262b7496f760856246f1575996bc899dfd2b49..0463f62c71be8e2f28e019a0f5d284794c8275b9 100644 (file)
@@ -21,7 +21,9 @@
 
 #include "filemetadatatooltip.h"
 #include <KIcon>
+#include <KIO/JobUiDelegate>
 #include <KIO/PreviewJob>
+#include <KJobWidgets>
 
 #include <QApplication>
 #include <QDesktopWidget>
@@ -44,9 +46,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 +105,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 +130,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()) {
+        KJobWidgets::setWindow(job, qApp->activeWindow());
+    }
 
     connect(job, SIGNAL(gotPreview(KFileItem,QPixmap)),
             this, SLOT(setPreviewPix(KFileItem,QPixmap)));