From: Jens Rutschmann Date: Tue, 19 Feb 2013 21:42:55 +0000 (+0100) Subject: Return the focus from the filter bar to the view if Enter is pressed X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/commitdiff_plain/0fee7ff26605dcabba061d36812487255ab6729f Return the focus from the filter bar to the view if Enter is pressed BUG: 297140 FIXED-IN: 4.11.0 REVIEW: 109020 --- diff --git a/src/dolphinviewcontainer.cpp b/src/dolphinviewcontainer.cpp index b2c8605d8..95254af35 100644 --- a/src/dolphinviewcontainer.cpp +++ b/src/dolphinviewcontainer.cpp @@ -158,6 +158,8 @@ DolphinViewContainer::DolphinViewContainer(const KUrl& url, QWidget* parent) : this, SLOT(setNameFilter(QString))); connect(m_filterBar, SIGNAL(closeRequest()), this, SLOT(closeFilterBar())); + connect(m_filterBar, SIGNAL(focusViewRequest()), + this, SLOT(focusView())); connect(m_view, SIGNAL(urlChanged(KUrl)), m_filterBar, SLOT(clear())); @@ -384,6 +386,12 @@ void DolphinViewContainer::setFilterBarVisible(bool visible) } } +void DolphinViewContainer::focusView() +{ + Q_ASSERT(m_view); + m_view->setFocus(); +} + void DolphinViewContainer::delayedStatusBarUpdate() { if (m_statusBarTimer->isActive() && (m_statusBarTimestamp.elapsed() > 2000)) { diff --git a/src/dolphinviewcontainer.h b/src/dolphinviewcontainer.h index bc58531a2..93fabecbc 100644 --- a/src/dolphinviewcontainer.h +++ b/src/dolphinviewcontainer.h @@ -147,6 +147,11 @@ public slots: */ void setFilterBarVisible(bool visible); + /** + * Sets focus to the item view. + */ + void focusView(); + signals: /** * Is emitted whenever the filter bar has changed its visibility state. diff --git a/src/filterbar/filterbar.cpp b/src/filterbar/filterbar.cpp index f3076f010..7a8951743 100644 --- a/src/filterbar/filterbar.cpp +++ b/src/filterbar/filterbar.cpp @@ -84,12 +84,23 @@ void FilterBar::showEvent(QShowEvent* event) void FilterBar::keyReleaseEvent(QKeyEvent* event) { QWidget::keyReleaseEvent(event); - if (event->key() == Qt::Key_Escape) { + + switch (event->key()) { + case Qt::Key_Escape: if (m_filterInput->text().isEmpty()) { emit closeRequest(); } else { m_filterInput->clear(); } + break; + + case Qt::Key_Enter: + case Qt::Key_Return: + emit focusViewRequest(); + break; + + default: + break; } } diff --git a/src/filterbar/filterbar.h b/src/filterbar/filterbar.h index 9546c6371..539d1e23f 100644 --- a/src/filterbar/filterbar.h +++ b/src/filterbar/filterbar.h @@ -59,6 +59,11 @@ signals: */ void closeRequest(); + /* + * Emitted as soon as the focus should be returned back to the view. + */ + void focusViewRequest(); + protected: virtual void showEvent(QShowEvent* event); virtual void keyReleaseEvent(QKeyEvent* event);