X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/5df0aafe228cabb7c48431b09faf641c36fac646..96c0153e96917e994b5a188a01bb021fc4832707:/src/views/tooltips/tooltipmanager.cpp diff --git a/src/views/tooltips/tooltipmanager.cpp b/src/views/tooltips/tooltipmanager.cpp index 76d8882cc..44e60049f 100644 --- a/src/views/tooltips/tooltipmanager.cpp +++ b/src/views/tooltips/tooltipmanager.cpp @@ -22,6 +22,7 @@ #include "filemetadatatooltip.h" #include #include +#include #include #include @@ -43,11 +44,12 @@ ToolTipManager::ToolTipManager(QAbstractItemView* parent, m_fileMetaDataToolTip(0), m_toolTipRequested(false), m_metaDataRequested(false), + m_appliedWaitCursor(false), m_item(), m_itemRect() { static FileMetaDataToolTip* sharedToolTip = 0; - if (sharedToolTip == 0) { + if (!sharedToolTip) { sharedToolTip = new FileMetaDataToolTip(); // TODO: Using K_GLOBAL_STATIC would be preferable to maintain the // instance, but the cleanup of KFileMetaDataWidget at this stage does @@ -94,7 +96,10 @@ ToolTipManager::~ToolTipManager() void ToolTipManager::hideToolTip() { - QApplication::restoreOverrideCursor(); + if (m_appliedWaitCursor) { + QApplication::restoreOverrideCursor(); + m_appliedWaitCursor = false; + } m_toolTipRequested = false; m_metaDataRequested = false; @@ -155,10 +160,16 @@ 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); - KIO::PreviewJob* job = KIO::filePreview(KFileItemList() << m_item, 256, 256); + // Request a preview of the item + m_fileMetaDataToolTip->setPreview(QPixmap()); + + KIO::PreviewJob* job = KIO::filePreview(KFileItemList() << m_item, QSize(256, 256)); connect(job, SIGNAL(gotPreview(const KFileItem&, const QPixmap&)), this, SLOT(setPreviewPix(const KFileItem&, const QPixmap&))); @@ -213,14 +224,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; }