X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/629046b0a109c6eb9ca4155e2d56c8849de95996..a124f2ada3bc3f36862dd2e207ceb68672610929:/src/tooltipmanager.cpp diff --git a/src/tooltipmanager.cpp b/src/tooltipmanager.cpp index d53c13e71..ad1dbe5d3 100644 --- a/src/tooltipmanager.cpp +++ b/src/tooltipmanager.cpp @@ -105,6 +105,7 @@ bool ToolTipManager::eventFilter(QObject* watched, QEvent* event) void ToolTipManager::requestToolTip(const QModelIndex& index) { if (index.column() == DolphinModel::Name) { + m_waitOnPreviewTimer->stop(); KToolTip::hideTip(); m_itemRect = m_view->visualRect(index); @@ -132,6 +133,8 @@ void ToolTipManager::hideToolTip() { m_timer->stop(); m_previewTimer->stop(); + m_waitOnPreviewTimer->stop(); + m_previewIsLate = false; KToolTip::hideTip(); } @@ -218,20 +221,18 @@ void ToolTipManager::showToolTip(KToolTipItem* tip) return; } - int x = 0; - if (hasRoomToLeft || hasRoomToRight) { - x = hasRoomToRight ? m_itemRect.right() : m_itemRect.left() - size.width(); - } else { - // Put the tooltip at the far right of the screen. The item will be overlapped - // horizontally, but the y-coordinate will be adjusted afterwards so that no overlapping - // occurs vertically. - x = desktop.right() - size.width(); - } - + int x = 0; int y = 0; if (hasRoomBelow || hasRoomAbove) { + x = QCursor::pos().x() + 16; // TODO: use mouse pointer width instead of the magic value of 16 + if (x + size.width() >= desktop.right()) { + x = desktop.right() - size.width(); + } y = hasRoomBelow ? m_itemRect.bottom() : m_itemRect.top() - size.height(); } else { + Q_ASSERT(hasRoomToLeft || hasRoomToRight); + x = hasRoomToRight ? m_itemRect.right() : m_itemRect.left() - size.width(); + // Put the tooltip at the bottom of the screen. The x-coordinate has already // been adjusted, so that no overlapping with m_itemRect occurs. y = desktop.bottom() - size.height();