diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/dolphincolumnwidget.cpp | 14 | ||||
| -rw-r--r-- | src/dolphinview.cpp | 17 |
2 files changed, 27 insertions, 4 deletions
diff --git a/src/dolphincolumnwidget.cpp b/src/dolphincolumnwidget.cpp index 5ef86a29d..d65e9aa57 100644 --- a/src/dolphincolumnwidget.cpp +++ b/src/dolphincolumnwidget.cpp @@ -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) { diff --git a/src/dolphinview.cpp b/src/dolphinview.cpp index 770bab1f7..f40accdde 100644 --- a/src/dolphinview.cpp +++ b/src/dolphinview.cpp @@ -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; |
