X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/f640e48bbe3504e4ae3e16349cf98ba9fae90428..c8d8556950005dfd96ebdb41d2f43ad90356367c:/src/views/dolphinview.cpp diff --git a/src/views/dolphinview.cpp b/src/views/dolphinview.cpp index d50a7dd09..a31bf566d 100644 --- a/src/views/dolphinview.cpp +++ b/src/views/dolphinview.cpp @@ -132,6 +132,8 @@ DolphinView::DolphinView(const KUrl& url, QWidget* parent) : m_container->setVisibleRoles(QList() << "name"); m_container->installEventFilter(this); setFocusProxy(m_container); + connect(m_container->horizontalScrollBar(), SIGNAL(valueChanged(int)), this, SLOT(hideToolTip())); + connect(m_container->verticalScrollBar(), SIGNAL(valueChanged(int)), this, SLOT(hideToolTip())); KItemListController* controller = m_container->controller(); controller->setSelectionBehavior(KItemListController::MultiSelection); @@ -144,6 +146,7 @@ DolphinView::DolphinView(const KUrl& url, QWidget* parent) : connect(controller, SIGNAL(itemContextMenuRequested(int,QPointF)), this, SLOT(slotItemContextMenuRequested(int,QPointF))); connect(controller, SIGNAL(viewContextMenuRequested(QPointF)), this, SLOT(slotViewContextMenuRequested(QPointF))); connect(controller, SIGNAL(headerContextMenuRequested(QPointF)), this, SLOT(slotHeaderContextMenuRequested(QPointF))); + connect(controller, SIGNAL(itemPressed(int,Qt::MouseButton)), this, SLOT(hideToolTip())); connect(controller, SIGNAL(itemHovered(int)), this, SLOT(slotItemHovered(int))); connect(controller, SIGNAL(itemUnhovered(int)), this, SLOT(slotItemUnhovered(int))); connect(controller, SIGNAL(itemDropEvent(int,QGraphicsSceneDragDropEvent*)), this, SLOT(slotItemDropEvent(int,QGraphicsSceneDragDropEvent*))); @@ -308,11 +311,8 @@ KFileItemList DolphinView::selectedItems() const const KItemListSelectionManager* selectionManager = m_container->controller()->selectionManager(); const QSet selectedIndexes = selectionManager->selectedItems(); - QList sortedIndexes = selectedIndexes.toList(); - qSort(sortedIndexes); - KFileItemList selectedItems; - QListIterator it(sortedIndexes); + QSetIterator it(selectedIndexes); while (it.hasNext()) { const int index = it.next(); selectedItems.append(model->fileItem(index)); @@ -551,9 +551,7 @@ void DolphinView::setUrl(const KUrl& url) emit urlAboutToBeChanged(url); m_url = url; - if (GeneralSettings::showToolTips()) { - m_toolTipManager->hideToolTip(); - } + hideToolTip(); // It is important to clear the items from the model before // applying the view properties, otherwise expensive operations @@ -731,18 +729,12 @@ void DolphinView::slotItemMiddleClicked(int index) void DolphinView::slotItemContextMenuRequested(int index, const QPointF& pos) { - if (GeneralSettings::showToolTips()) { - m_toolTipManager->hideToolTip(); - } const KFileItem item = fileItemModel()->fileItem(index); emit requestContextMenu(pos.toPoint(), item, url(), QList()); } void DolphinView::slotViewContextMenuRequested(const QPointF& pos) { - if (GeneralSettings::showToolTips()) { - m_toolTipManager->hideToolTip(); - } emit requestContextMenu(pos.toPoint(), KFileItem(), url(), QList()); } @@ -800,7 +792,7 @@ void DolphinView::slotItemHovered(int index) { const KFileItem item = fileItemModel()->fileItem(index); - if (GeneralSettings::showToolTips()) { + if (GeneralSettings::showToolTips() && QApplication::mouseButtons() == Qt::NoButton) { QRectF itemRect = m_container->controller()->view()->itemContextRect(index); const QPoint pos = m_container->mapToGlobal(itemRect.topLeft().toPoint()); itemRect.moveTo(pos); @@ -814,15 +806,20 @@ void DolphinView::slotItemHovered(int index) void DolphinView::slotItemUnhovered(int index) { Q_UNUSED(index); - if (GeneralSettings::showToolTips()) { - m_toolTipManager->hideToolTip(); - } + hideToolTip(); emit requestItemInfo(KFileItem()); } void DolphinView::slotItemDropEvent(int index, QGraphicsSceneDragDropEvent* event) { - const KFileItem destItem = fileItemModel()->fileItem(index); + KFileItem destItem = fileItemModel()->fileItem(index); + if (destItem.isNull()) { + destItem = fileItemModel()->rootItem(); + if (destItem.isNull()) { + kWarning() << "No destination item available for drop operation."; + return; + } + } QDropEvent dropEvent(event->pos().toPoint(), event->possibleActions(), @@ -830,7 +827,7 @@ void DolphinView::slotItemDropEvent(int index, QGraphicsSceneDragDropEvent* even event->buttons(), event->modifiers()); - const QString error = DragAndDropHelper::dropUrls(destItem, url(), &dropEvent); + const QString error = DragAndDropHelper::dropUrls(destItem, &dropEvent); if (!error.isEmpty()) { emit errorMessage(error); } @@ -1048,6 +1045,13 @@ void DolphinView::updateViewState() } } +void DolphinView::hideToolTip() +{ + if (GeneralSettings::showToolTips()) { + m_toolTipManager->hideToolTip(); + } +} + void DolphinView::showHoverInformation(const KFileItem& item) { emit requestItemInfo(item);