]> cloud.milkyroute.net Git - dolphin.git/commitdiff
clear the selection when Escape has been pressed (= same behavior like in Konqueror...
authorPeter Penz <peter.penz19@gmail.com>
Sun, 22 Feb 2009 14:07:46 +0000 (14:07 +0000)
committerPeter Penz <peter.penz19@gmail.com>
Sun, 22 Feb 2009 14:07:46 +0000 (14:07 +0000)
BUG: 185184

svn path=/trunk/KDE/kdebase/apps/; revision=929983

src/dolphincolumnwidget.cpp
src/dolphinview.cpp

index 5ef86a29db5213c94df43830d70abcdfd5b66b83..d65e9aa570f27f33588606245deb3052b626dafa 100644 (file)
@@ -393,7 +393,8 @@ void DolphinColumnWidget::keyPressEvent(QKeyEvent* event)
 
     DolphinController* controller = m_view->m_controller;
     controller->handleKeyPressEvent(event);
-    if (event->key() == Qt::Key_Right) {
+    switch (event->key()) {
+    case Qt::Key_Right: {
         // Special key handling for the column: A Key_Right should
         // open a new column for the currently selected folder.
         const QModelIndex index = currentIndex();
@@ -401,6 +402,17 @@ void DolphinColumnWidget::keyPressEvent(QKeyEvent* event)
         if (!item.isNull() && item.isDir()) {
             controller->emitItemTriggered(item);
         }
+        break;
+    }
+
+    case Qt::Key_Escape:
+        selectionModel()->setCurrentIndex(selectionModel()->currentIndex(),
+                                          QItemSelectionModel::Current |
+                                          QItemSelectionModel::Clear);
+        break;
+
+    default:
+        break;
     }
 
     if (m_toolTipManager != 0) {
index 770bab1f7b8560d88f9ecf570c684824851ef9ec..f40accddea79fd09a1bdf9f548adb7c27e888317 100644 (file)
@@ -314,7 +314,10 @@ bool DolphinView::hasSelection() const
 
 void DolphinView::clearSelection()
 {
-    itemView()->selectionModel()->clear();
+    QItemSelectionModel* selModel = itemView()->selectionModel();
+    const QModelIndex currentIndex = selModel->currentIndex();
+    selModel->setCurrentIndex(currentIndex, QItemSelectionModel::Current |
+                                            QItemSelectionModel::Clear);
 }
 
 KFileItemList DolphinView::selectedItems() const
@@ -866,8 +869,16 @@ bool DolphinView::eventFilter(QObject* watched, QEvent* event)
         break;
 
     case QEvent::KeyPress:
-        if ((watched == itemView()) && (m_toolTipManager != 0)) {
-            m_toolTipManager->hideTip();
+        if (watched == itemView()) {
+            if (m_toolTipManager != 0) {
+                m_toolTipManager->hideTip();
+            }
+
+            // clear the selection when Escape has been pressed
+            QKeyEvent* keyEvent = static_cast<QKeyEvent*>(event);
+            if (keyEvent->key() == Qt::Key_Escape) {
+                clearSelection();
+            }
         }
         break;