]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/views/tooltips/tooltipmanager.cpp
Use the actions "new_tab" and "new_window" for the viewport-contextmenu instead of...
[dolphin.git] / src / views / tooltips / tooltipmanager.cpp
index 76d8882cc48ecae85f92b060c585f9829008d8c8..09e97861a4c6fd7f179dc95133401f386910d1f5 100644 (file)
@@ -43,6 +43,7 @@ ToolTipManager::ToolTipManager(QAbstractItemView* parent,
     m_fileMetaDataToolTip(0),
     m_toolTipRequested(false),
     m_metaDataRequested(false),
+    m_appliedWaitCursor(false),
     m_item(),
     m_itemRect()
 {
@@ -94,7 +95,10 @@ ToolTipManager::~ToolTipManager()
 
 void ToolTipManager::hideToolTip()
 {
-    QApplication::restoreOverrideCursor();
+    if (m_appliedWaitCursor) {
+        QApplication::restoreOverrideCursor();
+        m_appliedWaitCursor = false;
+    }
 
     m_toolTipRequested = false;
     m_metaDataRequested = false;
@@ -155,9 +159,15 @@ void ToolTipManager::startContentRetrieval()
 
     m_fileMetaDataToolTip->setName(m_item.text());
 
+    // Request the retrieval of meta-data. The slot
+    // slotMetaDataRequestFinished() is invoked after the
+    // meta-data have been received.
     m_metaDataRequested = true;
     m_fileMetaDataToolTip->setItems(KFileItemList() << m_item);
 
+    // Request a preview of the item
+    m_fileMetaDataToolTip->setPreview(QPixmap());
+
     KIO::PreviewJob* job = KIO::filePreview(KFileItemList() << m_item, 256, 256);
 
     connect(job, SIGNAL(gotPreview(const KFileItem&, const QPixmap&)),
@@ -213,14 +223,19 @@ void ToolTipManager::slotMetaDataRequestFinished()
 void ToolTipManager::showToolTip()
 {
     Q_ASSERT(m_toolTipRequested);
-    QApplication::restoreOverrideCursor();
+    if (m_appliedWaitCursor) {
+        QApplication::restoreOverrideCursor();
+        m_appliedWaitCursor = false;
+    }
 
     if (QApplication::mouseButtons() & Qt::LeftButton) {
         return;
     }
 
     if (m_fileMetaDataToolTip->preview().isNull() || m_metaDataRequested) {
+        Q_ASSERT(!m_appliedWaitCursor);
         QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
+        m_appliedWaitCursor = true;
         return;
     }