m_waitOnPreviewTimer(0),
m_item(),
m_itemRect(),
- m_preview(),
- m_generatingPreview(),
- m_previewIsLate(),
- m_previewPass(),
- m_emptyRenderedKToolTipItem(),
+ m_preview(false),
+ m_generatingPreview(false),
+ m_previewIsLate(false),
+ m_previewPass(0),
+ m_emptyRenderedKToolTipItem(0),
m_pix()
{
KToolTip::setToolTipDelegate(g_delegate);
this, SLOT(prepareToolTip()));
m_view->viewport()->installEventFilter(this);
-
- m_preview = false;
- m_generatingPreview = false;
- m_previewIsLate = false;
- m_previewPass = 0;
- m_pix = QPixmap();
}
ToolTipManager::~ToolTipManager()
void ToolTipManager::requestToolTip(const QModelIndex& index)
{
if (index.column() == DolphinModel::Name) {
+ m_waitOnPreviewTimer->stop();
KToolTip::hideTip();
m_itemRect = m_view->visualRect(index);
{
m_timer->stop();
m_previewTimer->stop();
+ m_waitOnPreviewTimer->stop();
+ m_previewIsLate = false;
KToolTip::hideTip();
}
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();
const QPixmap& pixmap)
{
if (m_item.url() != item.url()) {
+ m_generatingPreview = false;
return;
}