]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/kitemviews/kitemlistcontroller.cpp
Fix selection rect after porting from QFontMetrics::width()
[dolphin.git] / src / kitemviews / kitemlistcontroller.cpp
index 82553ddda257473b07f93e7e4b187b54786479f9..0c25ebb8b9ace0f2703ffcb4dffdf64172cc21d5 100644 (file)
@@ -2,8 +2,7 @@
  *   Copyright (C) 2011 by Peter Penz <peter.penz19@gmail.com>             *
  *   Copyright (C) 2012 by Frank Reininghaus <frank78ac@googlemail.com>    *
  *                                                                         *
- *   Based on the Itemviews NG project from Trolltech Labs:                *
- *   http://qt.gitorious.org/qt-labs/itemviews-ng                          *
+ *   Based on the Itemviews NG project from Trolltech Labs                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
  *   it under the terms of the GNU General Public License as published by  *
@@ -61,6 +60,8 @@ KItemListController::KItemListController(KItemModelBase* model, KItemListView* v
             this, &KItemListController::slotChangeCurrentItem);
     connect(m_selectionManager, &KItemListSelectionManager::currentChanged,
             m_keyboardManager, &KItemListKeyboardSearchManager::slotCurrentChanged);
+    connect(m_selectionManager, &KItemListSelectionManager::selectionChanged,
+            m_keyboardManager, &KItemListKeyboardSearchManager::slotSelectionChanged);
 
     m_autoActivationTimer = new QTimer(this);
     m_autoActivationTimer->setSingleShot(true);
@@ -472,19 +473,18 @@ void KItemListController::slotChangeCurrentItem(const QString& text, bool search
     if (!m_model || m_model->count() == 0) {
         return;
     }
-    const int currentIndex = m_selectionManager->currentItem();
     int index;
     if (searchFromNextItem) {
+        const int currentIndex = m_selectionManager->currentItem();
         index = m_model->indexForKeyboardSearch(text, (currentIndex + 1) % m_model->count());
     } else {
-        index = m_model->indexForKeyboardSearch(text, currentIndex);
+        index = m_model->indexForKeyboardSearch(text, 0);
     }
     if (index >= 0) {
         m_selectionManager->setCurrentItem(index);
 
         if (m_selectionBehavior != NoSelection) {
-            m_selectionManager->clearSelection();
-            m_selectionManager->setSelected(index, 1);
+            m_selectionManager->replaceSelection(index);
             m_selectionManager->beginAnchoredSelection(index);
         }
 
@@ -524,7 +524,7 @@ void KItemListController::slotAutoActivationTimeout()
 
 bool KItemListController::inputMethodEvent(QInputMethodEvent* event)
 {
-    Q_UNUSED(event);
+    Q_UNUSED(event)
     return false;
 }
 
@@ -844,8 +844,8 @@ bool KItemListController::mouseDoubleClickEvent(QGraphicsSceneMouseEvent* event,
 
 bool KItemListController::dragEnterEvent(QGraphicsSceneDragDropEvent* event, const QTransform& transform)
 {
-    Q_UNUSED(event);
-    Q_UNUSED(transform);
+    Q_UNUSED(event)
+    Q_UNUSED(transform)
 
     DragAndDropHelper::clearUrlListMatchesUrlCache();
 
@@ -854,8 +854,8 @@ bool KItemListController::dragEnterEvent(QGraphicsSceneDragDropEvent* event, con
 
 bool KItemListController::dragLeaveEvent(QGraphicsSceneDragDropEvent* event, const QTransform& transform)
 {
-    Q_UNUSED(event);
-    Q_UNUSED(transform);
+    Q_UNUSED(event)
+    Q_UNUSED(transform)
 
     m_autoActivationTimer->stop();
     m_view->setAutoScroll(false);
@@ -929,8 +929,13 @@ bool KItemListController::dragMoveEvent(QGraphicsSceneDragDropEvent* event, cons
         m_view->hideDropIndicator();
     }
 
-    event->setAccepted(!DragAndDropHelper::urlListMatchesUrl(event->mimeData()->urls(), hoveredDir));
-
+    if (DragAndDropHelper::urlListMatchesUrl(event->mimeData()->urls(), hoveredDir)) {
+        event->setDropAction(Qt::IgnoreAction);
+        event->ignore();
+    } else {
+        event->setDropAction(event->proposedAction());
+        event->accept();
+    }
     return false;
 }
 
@@ -968,14 +973,14 @@ bool KItemListController::dropEvent(QGraphicsSceneDragDropEvent* event, const QT
 
 bool KItemListController::hoverEnterEvent(QGraphicsSceneHoverEvent* event, const QTransform& transform)
 {
-    Q_UNUSED(event);
-    Q_UNUSED(transform);
+    Q_UNUSED(event)
+    Q_UNUSED(transform)
     return false;
 }
 
 bool KItemListController::hoverMoveEvent(QGraphicsSceneHoverEvent* event, const QTransform& transform)
 {
-    Q_UNUSED(transform);
+    Q_UNUSED(transform)
     if (!m_model || !m_view) {
         return false;
     }
@@ -1006,8 +1011,8 @@ bool KItemListController::hoverMoveEvent(QGraphicsSceneHoverEvent* event, const
 
 bool KItemListController::hoverLeaveEvent(QGraphicsSceneHoverEvent* event, const QTransform& transform)
 {
-    Q_UNUSED(event);
-    Q_UNUSED(transform);
+    Q_UNUSED(event)
+    Q_UNUSED(transform)
 
     if (!m_model || !m_view) {
         return false;
@@ -1024,15 +1029,15 @@ bool KItemListController::hoverLeaveEvent(QGraphicsSceneHoverEvent* event, const
 
 bool KItemListController::wheelEvent(QGraphicsSceneWheelEvent* event, const QTransform& transform)
 {
-    Q_UNUSED(event);
-    Q_UNUSED(transform);
+    Q_UNUSED(event)
+    Q_UNUSED(transform)
     return false;
 }
 
 bool KItemListController::resizeEvent(QGraphicsSceneResizeEvent* event, const QTransform& transform)
 {
-    Q_UNUSED(event);
-    Q_UNUSED(transform);
+    Q_UNUSED(event)
+    Q_UNUSED(transform)
     return false;
 }
 
@@ -1214,7 +1219,7 @@ void KItemListController::startDragging()
     const QPoint hotSpot((pixmap.width() / pixmap.devicePixelRatio()) / 2, 0);
     drag->setHotSpot(hotSpot);
 
-    drag->exec(Qt::MoveAction | Qt::CopyAction | Qt::LinkAction, Qt::CopyAction);
+    drag->exec(Qt::MoveAction | Qt::CopyAction | Qt::LinkAction, Qt::MoveAction);
 
     QAccessibleEvent accessibilityEvent(view(), QAccessible::DragDropStart);
     QAccessible::updateAccessibility(&accessibilityEvent);