diff --git a/src/plugins/texteditor/outlinefactory.cpp b/src/plugins/texteditor/outlinefactory.cpp
index 72a32f1c0827987465c1c31c8c5546eb5b12e568..e2542ee9536195298de1629264d01be95f910a36 100644
--- a/src/plugins/texteditor/outlinefactory.cpp
+++ b/src/plugins/texteditor/outlinefactory.cpp
@@ -39,7 +39,6 @@ OutlineWidgetStack::OutlineWidgetStack(OutlineFactory *factory) :
     m_filterButton->setPopupMode(QToolButton::InstantPopup);
     m_filterMenu = new QMenu(m_filterButton);
     m_filterButton->setMenu(m_filterMenu);
-    connect(m_filterMenu, SIGNAL(aboutToShow()), this, SLOT(updateFilterMenu()));
 
     Core::EditorManager *editorManager = Core::EditorManager::instance();
     connect(editorManager, SIGNAL(currentEditorChanged(Core::IEditor*)),
@@ -108,6 +107,7 @@ void OutlineWidgetStack::updateFilterMenu()
             m_filterMenu->addAction(filterAction);
         }
     }
+    m_filterButton->setEnabled(!m_filterMenu->actions().isEmpty());
 }
 
 void OutlineWidgetStack::updateCurrentEditor(Core::IEditor *editor)
@@ -138,6 +138,8 @@ void OutlineWidgetStack::updateCurrentEditor(Core::IEditor *editor)
             addWidget(newWidget);
             setCurrentWidget(newWidget);
         }
+
+        updateFilterMenu();
     }
 }
 
diff --git a/src/plugins/texteditor/outlinefactory.h b/src/plugins/texteditor/outlinefactory.h
index 3614b93299807b94975fddbee02cc3a9133fcdd5..e14e0c29fc8d7feaa8f1077d65d918388d35411d 100644
--- a/src/plugins/texteditor/outlinefactory.h
+++ b/src/plugins/texteditor/outlinefactory.h
@@ -31,10 +31,10 @@ public:
 private:
     bool isCursorSynchronized() const;
     QWidget *dummyWidget() const;
+    void updateFilterMenu();
 
 private slots:
     void toggleCursorSynchronization();
-    void updateFilterMenu();
     void updateCurrentEditor(Core::IEditor *editor);
 
 private: