- delete m_fileMetaDataToolTip;
- m_fileMetaDataToolTip = 0;
-}
-
-
-bool ToolTipManager::eventFilter(QObject* watched, QEvent* event)
-{
- /*if (watched == m_view->viewport()) {
- switch (event->type()) {
- case QEvent::Leave:
- case QEvent::MouseButtonPress:
- hideToolTip();
- break;
- default:
- break;
- }
- } else if ((watched == m_view) && (event->type() == QEvent::KeyPress)) {
- hideToolTip();
- }*/
-
- return QObject::eventFilter(watched, event);
-}
-
-void ToolTipManager::requestToolTip(const QModelIndex& index)
-{
- Q_UNUSED(index);
- hideToolTip();
-
- // Only request a tooltip for the name column and when no selection or
- // drag & drop operation is done (indicated by the left mouse button)
- if (!(QApplication::mouseButtons() & Qt::LeftButton)) {
- m_itemRect = QRect(); //m_view->visualRect(index);
- const QPoint pos; // = m_view->viewport()->mapToGlobal(m_itemRect.topLeft());
- m_itemRect.moveTo(pos);
-
- //const QModelIndex dirIndex = m_proxyModel->mapToSource(index);
- //m_item = m_dolphinModel->itemForIndex(dirIndex);
-
- // 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.
- Q_ASSERT(!m_fileMetaDataToolTip);
- m_fileMetaDataToolTip = new FileMetaDataToolTip(m_view);
- connect(m_fileMetaDataToolTip, SIGNAL(metaDataRequestFinished(KFileItemList)),
- this, SLOT(slotMetaDataRequestFinished()));
-
- m_contentRetrievalTimer->start();
- m_showToolTipTimer->start();
- m_toolTipRequested = true;
- Q_ASSERT(!m_metaDataRequested);
+ if (m_fileMetaDataToolTip) {
+ m_fileMetaDataToolTip->hide();
+ // 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;