]> cloud.milkyroute.net Git - dolphin.git/commitdiff
Return the focus from the filter bar to the view if Enter is pressed
authorJens Rutschmann <Jens.Rutschmann@gmx.info>
Tue, 19 Feb 2013 21:42:55 +0000 (22:42 +0100)
committerFrank Reininghaus <frank78ac@googlemail.com>
Tue, 19 Feb 2013 21:43:55 +0000 (22:43 +0100)
BUG: 297140
FIXED-IN: 4.11.0
REVIEW: 109020

src/dolphinviewcontainer.cpp
src/dolphinviewcontainer.h
src/filterbar/filterbar.cpp
src/filterbar/filterbar.h

index b2c8605d89e1cb41809c50097d2dc68c50e5226b..95254af3510064bc7c15a3c3cda763063ab0fa3d 100644 (file)
@@ -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)) {
index bc58531a2700d6e50a1c32a4afccb77472255eff..93fabecbc4c430d1b4645819975bfc22e7a155d7 100644 (file)
@@ -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.
index f3076f01070455ef8691f11b8ebdc16fa0b24ee2..7a8951743bc4a5d8c8274dd410de9cc1d1e0e9ef 100644 (file)
@@ -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;
     }
 }
 
index 9546c6371084cd56b1416c10941b80fcfcd4713c..539d1e23f08b2ddc04f83e0a6a9a948eb92798bb 100644 (file)
@@ -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);