#include <QApplication>
#include <QDesktopWidget>
+#include <QScrollBar>
#include <QTimer>
#include <QToolTip>
connect(m_waitOnPreviewTimer, SIGNAL(timeout()),
this, SLOT(prepareToolTip()));
+ // When the mousewheel is used, the items don't get a hovered indication
+ // (Qt-issue #200665). To assure that the tooltip still gets hidden,
+ // the scrollbars are observed.
+ connect(parent->horizontalScrollBar(), SIGNAL(valueChanged(int)),
+ this, SLOT(hideTip()));
+ connect(parent->verticalScrollBar(), SIGNAL(valueChanged(int)),
+ this, SLOT(hideTip()));
+
m_view->viewport()->installEventFilter(this);
}
void ToolTipManager::requestToolTip(const QModelIndex& index)
{
- if (index.column() == DolphinModel::Name) {
+ // 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 ((index.column() == DolphinModel::Name) && !(QApplication::mouseButtons() & Qt::LeftButton)) {
m_waitOnPreviewTimer->stop();
KToolTip::hideTip();
const QModelIndex dirIndex = m_proxyModel->mapToSource(index);
m_item = m_dolphinModel->itemForIndex(dirIndex);
- // Only start the previewJob when the mouse has been over this item for 200msec,
- // this prevents a lot of useless previewJobs (when passing rapidly over a lot of items).
+ // only start the previewJob when the mouse has been over this item for 200 milliseconds,
+ // this prevents a lot of useless preview jobs when passing rapidly over a lot of items
m_previewTimer->start(200);
- // reset these variables
m_preview = false;
m_previewIsLate = false;
m_previewPass = 0;
if (m_preview && m_previewIsLate) {
// We got a preview, but it is late, the tooltip has already been shown.
// So update the tooltip directly.
- m_emptyRenderedKToolTipItem->setData(Qt::DecorationRole, KIcon(m_pix));
+ if (m_emptyRenderedKToolTipItem != 0) {
+ m_emptyRenderedKToolTipItem->setData(Qt::DecorationRole, KIcon(m_pix));
+ }
return;
}
if (QApplication::mouseButtons() & Qt::LeftButton) {
delete tip;
tip = 0;
+ // m_emptyRenderedKToolTipItem is an alias for tip.
+ m_emptyRenderedKToolTipItem = 0;
return;
}