]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/views/tooltips/tooltipmanager.cpp
Fix crash at shutdown after showing a tooltip
[dolphin.git] / src / views / tooltips / tooltipmanager.cpp
index 9375172eb4feefb70a3c8ca07d9debe0145ddc84..9e79a8f704a424b0e7e8a1c1eb02d9e055ac94da 100644 (file)
@@ -20,7 +20,7 @@
 #include "tooltipmanager.h"
 
 #include "dolphinfilemetadatawidget.h"
-#include <QIcon>
+
 #include <KIO/JobUiDelegate>
 #include <KIO/PreviewJob>
 #include <KJobWidgets>
@@ -28,6 +28,7 @@
 
 #include <QApplication>
 #include <QDesktopWidget>
+#include <QIcon>
 #include <QLayout>
 #include <QStyle>
 #include <QTimer>
 
 ToolTipManager::ToolTipManager(QWidget* parent) :
     QObject(parent),
-    m_showToolTipTimer(0),
-    m_contentRetrievalTimer(0),
-    m_transientParent(0),
-    m_fileMetaDataWidget(0),
+    m_showToolTipTimer(nullptr),
+    m_contentRetrievalTimer(nullptr),
+    m_transientParent(nullptr),
+    m_fileMetaDataWidget(nullptr),
     m_toolTipRequested(false),
     m_metaDataRequested(false),
     m_appliedWaitCursor(false),
@@ -81,11 +82,10 @@ void ToolTipManager::showToolTip(const KFileItem& item, const QRectF& itemRect,
     // Only start the retrieving of the content, when the mouse has been over this
     // item for 200 milliseconds. This prevents a lot of useless preview jobs and
     // meta data retrieval, when passing rapidly over a lot of items.
-    delete m_fileMetaDataWidget;
-    m_fileMetaDataWidget = new DolphinFileMetaDataWidget();
-    connect(m_fileMetaDataWidget, &DolphinFileMetaDataWidget::metaDataRequestFinished,
+    m_fileMetaDataWidget.reset(new DolphinFileMetaDataWidget());
+    connect(m_fileMetaDataWidget.data(), &DolphinFileMetaDataWidget::metaDataRequestFinished,
             this, &ToolTipManager::slotMetaDataRequestFinished);
-    connect(m_fileMetaDataWidget, &DolphinFileMetaDataWidget::urlActivated,
+    connect(m_fileMetaDataWidget.data(), &DolphinFileMetaDataWidget::urlActivated,
             this, &ToolTipManager::urlActivated);
 
     m_contentRetrievalTimer->start();
@@ -128,7 +128,10 @@ void ToolTipManager::startContentRetrieval()
     // Request a preview of the item
     m_fileMetaDataWidget->setPreview(QPixmap());
 
-    KIO::PreviewJob* job = new KIO::PreviewJob(KFileItemList() << m_item, QSize(256, 256));
+    QStringList plugins = KIO::PreviewJob::availablePlugins();
+    KIO::PreviewJob* job = new KIO::PreviewJob(KFileItemList() << m_item,
+                                               QSize(256, 256),
+                                               &plugins);
     job->setIgnoreMaximumSize(m_item.isLocalFile());
     if (job->uiDelegate()) {
         KJobWidgets::setWindow(job, qApp->activeWindow());
@@ -205,7 +208,7 @@ void ToolTipManager::showToolTip()
     if (!m_tooltipWidget) {
         m_tooltipWidget.reset(new KToolTipWidget());
     }
-    m_tooltipWidget->showBelow(m_itemRect, m_fileMetaDataWidget, m_transientParent);
+    m_tooltipWidget->showBelow(m_itemRect, m_fileMetaDataWidget.data(), m_transientParent);
     m_toolTipRequested = false;
 }