diff --git a/src/plugins/coreplugin/editormanager/editormanager.cpp b/src/plugins/coreplugin/editormanager/editormanager.cpp
index 7f4db0b13a725ee47897bc7940d0539f47d68994..de6dde03251926b6dfbecdc6782110c479706051 100644
--- a/src/plugins/coreplugin/editormanager/editormanager.cpp
+++ b/src/plugins/coreplugin/editormanager/editormanager.cpp
@@ -1419,7 +1419,7 @@ void EditorManager::gotoNextDocHistory()
         EditorView *view = currentEditorView();
         dialog->setEditors(m_d->m_view, view, m_d->m_editorModel);
         dialog->selectNextEditor();
-        showWindowPopup();
+        showPopupOrSelectDocument();
     }
 }
 
@@ -1432,7 +1432,7 @@ void EditorManager::gotoPreviousDocHistory()
         EditorView *view = currentEditorView();
         dialog->setEditors(m_d->m_view, view, m_d->m_editorModel);
         dialog->selectPreviousEditor();
-        showWindowPopup();
+        showPopupOrSelectDocument();
     }
 }
 
@@ -1535,12 +1535,16 @@ OpenEditorsWindow *EditorManager::windowPopup() const
     return m_d->m_windowPopup;
 }
 
-void EditorManager::showWindowPopup() const
+void EditorManager::showPopupOrSelectDocument() const
 {
-    const QPoint p(mapToGlobal(QPoint(0, 0)));
-    m_d->m_windowPopup->move((width()-m_d->m_windowPopup->width())/2 + p.x(),
-                        (height()-m_d->m_windowPopup->height())/2 + p.y());
-    m_d->m_windowPopup->setVisible(true);
+    if (QApplication::keyboardModifiers() == Qt::NoModifier) {
+        windowPopup()->selectAndHide();
+    } else {
+        const QPoint p(mapToGlobal(QPoint(0, 0)));
+        windowPopup()->move((width()-m_d->m_windowPopup->width())/2 + p.x(),
+                            (height()-m_d->m_windowPopup->height())/2 + p.y());
+        windowPopup()->setVisible(true);
+    }
 }
 
 QByteArray EditorManager::saveState() const
diff --git a/src/plugins/coreplugin/editormanager/editormanager.h b/src/plugins/coreplugin/editormanager/editormanager.h
index 06e88b8bf91c4dc15b95e56da25e6de2d784e1ed..44febeba42b2096c0bda73b03054479233f90263 100644
--- a/src/plugins/coreplugin/editormanager/editormanager.h
+++ b/src/plugins/coreplugin/editormanager/editormanager.h
@@ -159,7 +159,7 @@ public:
     void readSettings();
 
     Internal::OpenEditorsWindow *windowPopup() const;
-    void showWindowPopup() const;
+    void showPopupOrSelectDocument() const;
 
     void showEditorInfoBar(const QString &kind,
                            const QString &infoText,
diff --git a/src/plugins/coreplugin/editormanager/openeditorswindow.cpp b/src/plugins/coreplugin/editormanager/openeditorswindow.cpp
index 6079ee7e60caa47c8429690962d1e5984566bed1..8a428d87bf0f6d55cc34a5aa84c87d609c86395a 100644
--- a/src/plugins/coreplugin/editormanager/openeditorswindow.cpp
+++ b/src/plugins/coreplugin/editormanager/openeditorswindow.cpp
@@ -63,9 +63,6 @@ OpenEditorsWindow::OpenEditorsWindow(QWidget *parent) :
 
     connect(m_editorList, SIGNAL(itemClicked(QTreeWidgetItem*, int)),
             this, SLOT(editorClicked(QTreeWidgetItem*)));
-
-    m_autoHide.setSingleShot(true);
-    connect(&m_autoHide, SIGNAL(timeout()), this, SLOT(selectAndHide()));
 }
 
 void OpenEditorsWindow::selectAndHide()
@@ -78,7 +75,6 @@ void OpenEditorsWindow::setVisible(bool visible)
 {
     QWidget::setVisible(visible);
     if (visible) {
-        m_autoHide.start(600);
         setFocus();
     }
 }
@@ -96,19 +92,6 @@ bool OpenEditorsWindow::isCentering()
 }
 
 
-bool OpenEditorsWindow::event(QEvent *e) {
-    if (e->type() == QEvent::KeyRelease) {
-        QKeyEvent *ke = static_cast<QKeyEvent*>(e);
-        m_autoHide.stop();
-        if (ke->modifiers() == 0
-            /*HACK this is to overcome some event inconsistencies between platforms*/
-            || (ke->modifiers() == Qt::AltModifier && (ke->key() == Qt::Key_Alt || ke->key() == -1))) {
-            selectAndHide();
-        }
-    }
-    return QWidget::event(e);
-}
-
 bool OpenEditorsWindow::eventFilter(QObject *obj, QEvent *e)
 {
     if (obj == m_editorList) {
@@ -122,6 +105,14 @@ bool OpenEditorsWindow::eventFilter(QObject *obj, QEvent *e)
                 selectEditor(m_editorList->currentItem());
                 return true;
             }
+        } else if (e->type() == QEvent::KeyRelease) {
+            QKeyEvent *ke = static_cast<QKeyEvent*>(e);
+            if (ke->modifiers() == 0
+                    /*HACK this is to overcome some event inconsistencies between platforms*/
+                    || (ke->modifiers() == Qt::AltModifier
+                    && (ke->key() == Qt::Key_Alt || ke->key() == -1))) {
+                selectAndHide();
+            }
         }
     }
     return QWidget::eventFilter(obj, e);
diff --git a/src/plugins/coreplugin/editormanager/openeditorswindow.h b/src/plugins/coreplugin/editormanager/openeditorswindow.h
index 12175d66b0a6cafd5ff72c93e2e3ac5f05b5f20b..b883170f06d9b68d3005b282798d893d3edbbf16 100644
--- a/src/plugins/coreplugin/editormanager/openeditorswindow.h
+++ b/src/plugins/coreplugin/editormanager/openeditorswindow.h
@@ -59,17 +59,18 @@ public:
 
     void setEditors(EditorView *mainView, EditorView *view, OpenEditorsModel *model);
 
-    bool event(QEvent *e);
     bool eventFilter(QObject *src, QEvent *e);
     void focusInEvent(QFocusEvent *);
     void setVisible(bool visible);
     void selectNextEditor();
     void selectPreviousEditor();
 
+public slots:
+    void selectAndHide();
+
 private slots:
     void editorClicked(QTreeWidgetItem *item);
     void selectEditor(QTreeWidgetItem *item);
-    void selectAndHide();
 
 private:
     static const int WIDTH;
@@ -85,7 +86,6 @@ private:
     bool isSameFile(IEditor *editorA, IEditor *editorB) const;
 
     QTreeWidget *m_editorList;
-    QTimer m_autoHide;
 };
 
 } // namespace Internal