diff --git a/src/filewidgets/kdiroperator.h b/src/filewidgets/kdiroperator.h --- a/src/filewidgets/kdiroperator.h +++ b/src/filewidgets/kdiroperator.h @@ -685,8 +685,6 @@ void resizeEvent(QResizeEvent *event) override; - void keyPressEvent(QKeyEvent *event) override; - /** * Sets up all the actions. Called from the constructor, you usually * better not call this. diff --git a/src/filewidgets/kdiroperator.cpp b/src/filewidgets/kdiroperator.cpp --- a/src/filewidgets/kdiroperator.cpp +++ b/src/filewidgets/kdiroperator.cpp @@ -70,16 +70,6 @@ // sorting mode. static const int QDirSortMask = QDir::SortByMask | QDir::Type; - -void KDirOperator::keyPressEvent(QKeyEvent *e) -{ - if (!(e->key() == Qt::Key_Return || e->key() == Qt::Key_Enter)) { - QWidget::keyPressEvent(e); - } else { - emit keyEnterReturnPressed(); - } -} - class Q_DECL_HIDDEN KDirOperator::Private { public: @@ -1445,6 +1435,19 @@ evt->accept(); return true; } + case QEvent::KeyPress: { + QKeyEvent *evt = static_cast(event); + if (evt->key() == Qt::Key_Return || evt->key() == Qt::Key_Enter) { + // when no elements are selected and Return/Enter is pressed + // emit keyEnterReturnPressed + // let activated event be emitted by subsequent QAbstractItemView::keyPress otherwise + if (!d->itemView->currentIndex().isValid()) { + emit keyEnterReturnPressed(); + evt->accept(); + return true; + } + } + } default: break; }