diff --git a/src/plugins/coreplugin/fancyactionbar.cpp b/src/plugins/coreplugin/fancyactionbar.cpp
index e680d45fa3e2e343e5629da662f62f4b6b0b56e3..45ca68b05485c97b55635abe4358caf33d9ee845 100644
--- a/src/plugins/coreplugin/fancyactionbar.cpp
+++ b/src/plugins/coreplugin/fancyactionbar.cpp
@@ -136,12 +136,10 @@ void FancyToolButton::paintEvent(QPaintEvent *event)
     QMargins margins;
 
     QPixmap pix = icon().pixmap(Core::Constants::TARGET_ICON_SIZE, Core::Constants::TARGET_ICON_SIZE, isEnabled() ? QIcon::Normal : QIcon::Disabled);
-    QPoint center = rect().center();
     QSizeF halfPixSize = pix.size()/2.0;
-
-    painter.drawPixmap(center-QPointF(halfPixSize.width()-1, halfPixSize.height()-1), pix);
     // draw popup texts
     if (isTitledAction) {
+
         QFont normalFont(painter.font());
         normalFont.setPointSizeF(Utils::StyleHelper::sidebarFontSize());
         QFont boldFont(normalFont);
@@ -149,9 +147,19 @@ void FancyToolButton::paintEvent(QPaintEvent *event)
         QFontMetrics fm(normalFont);
         QFontMetrics boldFm(boldFont);
         int lineHeight = boldFm.height();
-
         int textFlags = Qt::AlignVCenter|Qt::AlignHCenter;
 
+        QRect iconRect = rect();
+        const QString projectName = defaultAction()->property("heading").toString();
+        if (!projectName.isNull())
+            iconRect.adjust(0, lineHeight + 4, 0, 0);
+
+        const QString buildConfiguration = defaultAction()->property("subtitle").toString();
+        if (!buildConfiguration.isNull())
+            iconRect.adjust(0, 0, 0, -lineHeight - 4);
+
+        QPoint center = iconRect.center();
+        painter.drawPixmap(center-QPointF(halfPixSize.width()-1, halfPixSize.height()-1), pix);
         painter.setFont(normalFont);
 
         QPoint textOffset = center - QPoint(pix.rect().width()/2, pix.rect().height()/2);
@@ -163,7 +171,7 @@ void FancyToolButton::paintEvent(QPaintEvent *event)
         else
             penColor = Qt::gray;
         painter.setPen(penColor);
-        const QString projectName = defaultAction()->property("heading").toString();
+
         QString ellidedProjectName = fm.elidedText(projectName, Qt::ElideMiddle, r.width() - 6);
         if (isEnabled()) {
             const QRectF shadowR = r.translated(0, 1);
@@ -174,7 +182,6 @@ void FancyToolButton::paintEvent(QPaintEvent *event)
         painter.drawText(r, textFlags, ellidedProjectName);
         textOffset = center + QPoint(pix.rect().width()/2, pix.rect().height()/2);
         r = QRectF(0, textOffset.y()+5, rect().width(), lineHeight);
-        const QString buildConfiguration = defaultAction()->property("subtitle").toString();
         painter.setFont(boldFont);
         QString ellidedBuildConfiguration = boldFm.elidedText(buildConfiguration, Qt::ElideMiddle, r.width());
         if (isEnabled()) {
@@ -183,13 +190,17 @@ void FancyToolButton::paintEvent(QPaintEvent *event)
             painter.drawText(shadowR, textFlags, ellidedBuildConfiguration);
             painter.setPen(penColor);
         }
-        painter.drawText(r, textFlags, ellidedBuildConfiguration);
-        QStyleOption opt;
-        opt.initFrom(this);
-        opt.rect = rect().adjusted(rect().width() - 16, 0, -8, 0);
-        Utils::StyleHelper::drawArrow(QStyle::PE_IndicatorArrowRight, &painter, &opt);
+        if (!icon().isNull()) {
+            painter.drawText(r, textFlags, ellidedBuildConfiguration);
+            QStyleOption opt;
+            opt.initFrom(this);
+            opt.rect = iconRect.adjusted(iconRect.width() - 16, 0, -8, 0);
+            Utils::StyleHelper::drawArrow(QStyle::PE_IndicatorArrowRight, &painter, &opt);
+        }
+    } else {
+        QPoint center = rect().center();
+        painter.drawPixmap(center-QPointF(halfPixSize.width()-1, halfPixSize.height()-1), pix);
     }
-
 }
 
 void FancyActionBar::paintEvent(QPaintEvent *event)
@@ -213,7 +224,14 @@ QSize FancyToolButton::sizeHint() const
         boldFont.setBold(true);
         QFontMetrics fm(boldFont);
         qreal lineHeight = fm.height();
-        buttonSize += QSizeF(0, (lineHeight*2.8));
+        const QString projectName = defaultAction()->property("heading").toString();
+        buttonSize += QSizeF(0, 4);
+        if (!projectName.isEmpty())
+            buttonSize += QSizeF(0, lineHeight + 6);
+
+        const QString buildConfiguration = defaultAction()->property("subtitle").toString();
+        if (!buildConfiguration.isEmpty())
+            buttonSize += QSizeF(0, lineHeight + 6);
     }
     return buttonSize.toSize();
 }