X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/0d8aebb7ba7d3e717171ac4d12b0c3800a4739d1..148282e2d856b47ceb191eeef4c834118c8cdffd:/src/tooltipmanager.cpp diff --git a/src/tooltipmanager.cpp b/src/tooltipmanager.cpp index c8632daf6..eb1e52ec1 100644 --- a/src/tooltipmanager.cpp +++ b/src/tooltipmanager.cpp @@ -29,6 +29,7 @@ #include #include +#include #include #include @@ -81,6 +82,14 @@ ToolTipManager::ToolTipManager(QAbstractItemView* parent, 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); } @@ -104,7 +113,9 @@ bool ToolTipManager::eventFilter(QObject* watched, QEvent* event) 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(); @@ -115,10 +126,9 @@ void ToolTipManager::requestToolTip(const QModelIndex& index) 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;