diff --git a/src/plugins/coreplugin/fancyactionbar.cpp b/src/plugins/coreplugin/fancyactionbar.cpp
index 8dc6a520aa6f0b506e8dabb71bc425cf67bb9b11..e680d45fa3e2e343e5629da662f62f4b6b0b56e3 100644
--- a/src/plugins/coreplugin/fancyactionbar.cpp
+++ b/src/plugins/coreplugin/fancyactionbar.cpp
@@ -57,10 +57,17 @@ using namespace Internal;
 FancyToolButton::FancyToolButton(QWidget *parent)
     : QToolButton(parent), m_fader(0)
 {
+    m_hasForceVisible = false;
     setAttribute(Qt::WA_Hover, true);
     setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred);
 }
 
+void FancyToolButton::forceVisible(bool visible)
+{
+    m_hasForceVisible = true;
+    setVisible(visible);
+}
+
 bool FancyToolButton::event(QEvent *e)
 {
     switch(e->type()) {
@@ -220,8 +227,10 @@ void FancyToolButton::actionChanged()
 {
     // the default action changed in some way, e.g. it might got hidden
     // since we inherit a tool button we won't get invisible, so do this here
-    if (QAction* action = defaultAction())
-        setVisible(action->isVisible());
+    if (!m_hasForceVisible) {
+        if (QAction* action = defaultAction())
+            setVisible(action->isVisible());
+    }
 }
 
 FancyActionBar::FancyActionBar(QWidget *parent)
@@ -270,8 +279,8 @@ void FancyActionBar::modeChanged(Core::IMode *mode)
     if (m_runButton && m_debugButton) {
         bool inDebugMode = (mode->id() == QLatin1String("Debugger.Mode.Debug"));
         layout()->setEnabled(false);
-        m_runButton->setVisible(!inDebugMode);
-        m_debugButton->setVisible(inDebugMode);
+        m_runButton->forceVisible(!inDebugMode);
+        m_debugButton->forceVisible(inDebugMode);
         layout()->setEnabled(true);
     }
 }
diff --git a/src/plugins/coreplugin/fancyactionbar.h b/src/plugins/coreplugin/fancyactionbar.h
index 6879cfa9dd54240d32f85d36137cad085aa803b4..ce646135b54afbe8935ed81e2b802021b20ebd02 100644
--- a/src/plugins/coreplugin/fancyactionbar.h
+++ b/src/plugins/coreplugin/fancyactionbar.h
@@ -60,8 +60,13 @@ public:
     float fader() { return m_fader; }
     void setFader(float value) { m_fader = value; update(); }
 
+    void forceVisible(bool visible);
+
 private slots:
     void actionChanged();
+
+private:
+    bool m_hasForceVisible;
 };
 
 class FancyActionBar : public QWidget
diff --git a/src/plugins/coreplugin/progressmanager/futureprogress.cpp b/src/plugins/coreplugin/progressmanager/futureprogress.cpp
index 66f390c55905552635c077ee77d9d9a7621ae7a2..11cda41f34518965c441bb64107e687c04669691 100644
--- a/src/plugins/coreplugin/progressmanager/futureprogress.cpp
+++ b/src/plugins/coreplugin/progressmanager/futureprogress.cpp
@@ -44,6 +44,8 @@
 
 using namespace Core;
 
+const int notificationTimeout = 8000;
+
 void FadeWidgetHack::paintEvent(QPaintEvent *)
 {
     if (m_opacity == 0)
@@ -187,7 +189,7 @@ bool FutureProgress::eventFilter(QObject *, QEvent *e)
     if (m_waitingForUserInteraction
         && (e->type() == QEvent::MouseMove || e->type() == QEvent::KeyPress)) {
         qApp->removeEventFilter(this);
-        QTimer::singleShot(5000, this, SLOT(fadeAway()));
+        QTimer::singleShot(notificationTimeout, this, SLOT(fadeAway()));
     }
     return false;
 }
@@ -205,7 +207,7 @@ void FutureProgress::setFinished()
         m_waitingForUserInteraction = true;
         qApp->installEventFilter(this);
     } else {
-        QTimer::singleShot(5000, this, SLOT(fadeAway()));
+        QTimer::singleShot(notificationTimeout, this, SLOT(fadeAway()));
     }
 }