┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJens Rutschmann <[email protected]>2013-02-19 22:42:55 +0100
committerFrank Reininghaus <[email protected]>2013-02-19 22:43:55 +0100
commit0fee7ff26605dcabba061d36812487255ab6729f (patch)
tree6455be051c8f67d7ab0df1fee76b4d0e4949d600 /src
parentcc1455c0e6076c4abd5e321343be456184c51f5e (diff)
Return the focus from the filter bar to the view if Enter is pressed
BUG: 297140 FIXED-IN: 4.11.0 REVIEW: 109020
Diffstat (limited to 'src')
-rw-r--r--src/dolphinviewcontainer.cpp8
-rw-r--r--src/dolphinviewcontainer.h5
-rw-r--r--src/filterbar/filterbar.cpp13
-rw-r--r--src/filterbar/filterbar.h5
4 files changed, 30 insertions, 1 deletions
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);