Index: /trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/chooser/UIGChooserItemGroup.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/chooser/UIGChooserItemGroup.cpp	(revision 42794)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/chooser/UIGChooserItemGroup.cpp	(revision 42795)
@@ -295,11 +295,9 @@
     {
         /* Layout hints: */
-        case GroupItemData_HorizonalMargin: return 8;
+        case GroupItemData_HorizonalMargin: return 5;
         case GroupItemData_VerticalMargin: return 5;
         case GroupItemData_MajorSpacing: return 10;
         case GroupItemData_MinorSpacing: return 3;
         /* Pixmaps: */
-        case GroupItemData_ToggleButtonPixmap: return UIIconPool::iconSet(":/arrow_right_10px.png");
-        case GroupItemData_EnterButtonPixmap: return UIIconPool::iconSet(":/start_16px.png");
         case GroupItemData_GroupPixmap: return UIIconPool::iconSet(":/nw_16px.png");
         case GroupItemData_MachinePixmap: return UIIconPool::iconSet(":/machine_16px.png");
@@ -652,5 +650,5 @@
 
                 /* Layout exit-button: */
-                int iExitButtonX = iHorizontalMargin;
+                int iExitButtonX = iHorizontalMargin + 2;
                 int iExitButtonY = iExitButtonHeight == iFullHeaderHeight ? iVerticalMargin :
                                    iVerticalMargin + (iFullHeaderHeight - iExitButtonHeight) / 2;
@@ -1207,4 +1205,12 @@
     int iFullHeaderHeight = data(GroupItemData_FullHeaderSize).toSize().height();
 
+    /* Update buttons: */
+    if (m_pToggleButton)
+        m_pToggleButton->setParentSelected(model()->selectionList().contains(this));
+    if (m_pEnterButton)
+        m_pEnterButton->setParentSelected(model()->selectionList().contains(this));
+    if (m_pExitButton)
+        m_pExitButton->setParentSelected(model()->selectionList().contains(this));
+
     /* Paint name: */
     int iNameX = iHorizontalMargin + iMajorSpacing;
@@ -1212,5 +1218,5 @@
         iNameX += toggleButtonSize.width();
     else if (!isMainRoot())
-        iNameX += exitButtonSize.width();
+        iNameX += 2 + exitButtonSize.width();
     int iNameY = nameSize.height() == iFullHeaderHeight ? iVerticalMargin :
                  iVerticalMargin + (iFullHeaderHeight - nameSize.height()) / 2;
@@ -1345,5 +1351,4 @@
         /* Setup toggle-button: */
         m_pToggleButton = new UIGraphicsRotatorButton(this, "additionalHeight", opened());
-        m_pToggleButton->setIcon(data(GroupItemData_ToggleButtonPixmap).value<QIcon>());
         connect(m_pToggleButton, SIGNAL(sigRotationStart()), this, SLOT(sltGroupToggleStart()));
         connect(m_pToggleButton, SIGNAL(sigRotationFinish(bool)), this, SLOT(sltGroupToggleFinish(bool)));
@@ -1351,6 +1356,5 @@
 
         /* Setup enter-button: */
-        m_pEnterButton = new UIGraphicsButton(this);
-        m_pEnterButton->setIcon(data(GroupItemData_EnterButtonPixmap).value<QIcon>());
+        m_pEnterButton = new UIGraphicsButton(this, UIGraphicsButtonType_DirectArrow);
         connect(m_pEnterButton, SIGNAL(sigButtonClicked()), this, SLOT(sltIndentRoot()));
         m_pEnterButton->hide();
@@ -1369,6 +1373,5 @@
     {
         /* Setup exit-button: */
-        m_pExitButton = new UIGraphicsButton(this);
-        m_pExitButton->setIcon(data(GroupItemData_EnterButtonPixmap).value<QIcon>());
+        m_pExitButton = new UIGraphicsButton(this, UIGraphicsButtonType_DirectArrow);
         connect(m_pExitButton, SIGNAL(sigButtonClicked()), this, SLOT(sltUnindentRoot()));
         QSizeF sh = m_pExitButton->minimumSizeHint();
Index: /trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/chooser/UIGChooserItemGroup.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/chooser/UIGChooserItemGroup.h	(revision 42794)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/chooser/UIGChooserItemGroup.h	(revision 42795)
@@ -96,6 +96,4 @@
         GroupItemData_MinorSpacing,
         /* Pixmaps: */
-        GroupItemData_ToggleButtonPixmap,
-        GroupItemData_EnterButtonPixmap,
         GroupItemData_GroupPixmap,
         GroupItemData_MachinePixmap,
Index: /trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/chooser/UIGChooserItemMachine.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/chooser/UIGChooserItemMachine.cpp	(revision 42794)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/chooser/UIGChooserItemMachine.cpp	(revision 42795)
@@ -793,22 +793,26 @@
 
     /* Create buttons: */
-    m_pSettingsButton = new UIGraphicsZoomButton(m_pToolBar, UIGraphicsZoomDirection_Top | UIGraphicsZoomDirection_Left);
+    m_pSettingsButton = new UIGraphicsZoomButton(m_pToolBar,
+                                                 data(MachineItemData_SettingsButtonPixmap).value<QIcon>(),
+                                                 UIGraphicsZoomDirection_Top | UIGraphicsZoomDirection_Left);
     m_pSettingsButton->setIndent(m_pToolBar->toolBarMargin() - 1);
-    m_pSettingsButton->setIcon(data(MachineItemData_SettingsButtonPixmap).value<QIcon>());
     m_pToolBar->insertItem(m_pSettingsButton, 0, 0);
 
-    m_pStartButton = new UIGraphicsZoomButton(m_pToolBar, UIGraphicsZoomDirection_Top | UIGraphicsZoomDirection_Right);
+    m_pStartButton = new UIGraphicsZoomButton(m_pToolBar,
+                                              data(MachineItemData_StartButtonPixmap).value<QIcon>(),
+                                              UIGraphicsZoomDirection_Top | UIGraphicsZoomDirection_Right);
     m_pStartButton->setIndent(m_pToolBar->toolBarMargin() - 1);
-    m_pStartButton->setIcon(data(MachineItemData_StartButtonPixmap).value<QIcon>());
     m_pToolBar->insertItem(m_pStartButton, 0, 1);
 
-    m_pPauseButton = new UIGraphicsZoomButton(m_pToolBar, UIGraphicsZoomDirection_Bottom | UIGraphicsZoomDirection_Left);
+    m_pPauseButton = new UIGraphicsZoomButton(m_pToolBar,
+                                              data(MachineItemData_PauseButtonPixmap).value<QIcon>(),
+                                              UIGraphicsZoomDirection_Bottom | UIGraphicsZoomDirection_Left);
     m_pPauseButton->setIndent(m_pToolBar->toolBarMargin() - 1);
-    m_pPauseButton->setIcon(data(MachineItemData_PauseButtonPixmap).value<QIcon>());
     m_pToolBar->insertItem(m_pPauseButton, 1, 0);
 
-    m_pCloseButton = new UIGraphicsZoomButton(m_pToolBar, UIGraphicsZoomDirection_Bottom | UIGraphicsZoomDirection_Right);
+    m_pCloseButton = new UIGraphicsZoomButton(m_pToolBar,
+                                              data(MachineItemData_CloseButtonPixmap).value<QIcon>(),
+                                              UIGraphicsZoomDirection_Bottom | UIGraphicsZoomDirection_Right);
     m_pCloseButton->setIndent(m_pToolBar->toolBarMargin() - 1);
-    m_pCloseButton->setIcon(data(MachineItemData_CloseButtonPixmap).value<QIcon>());
     m_pToolBar->insertItem(m_pCloseButton, 1, 1);
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/details/UIGDetailsElement.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/details/UIGDetailsElement.cpp	(revision 42794)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/details/UIGDetailsElement.cpp	(revision 42795)
@@ -171,5 +171,4 @@
         /* Pixmaps: */
         case ElementData_Pixmap: return m_icon;
-        case ElementData_ButtonPixmap: return m_buttonIcon;
         /* Fonts: */
         case ElementData_NameFont:
@@ -393,7 +392,5 @@
 {
     /* Setup toggle-button: */
-    m_buttonIcon = UIIconPool::iconSet(":/arrow_right_10px.png");
     m_pButton = new UIGraphicsRotatorButton(this, "additionalHeight", !m_fClosed, true /* reflected */);
-    m_pButton->setIcon(m_buttonIcon);
     connect(m_pButton, SIGNAL(sigRotationStart()), this, SLOT(sltElementToggleStart()));
     connect(m_pButton, SIGNAL(sigRotationFinish(bool)), this, SLOT(sltElementToggleFinish(bool)));
Index: /trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/details/UIGDetailsElement.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/details/UIGDetailsElement.h	(revision 42794)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/details/UIGDetailsElement.h	(revision 42795)
@@ -97,5 +97,4 @@
         /* Pixmaps: */
         ElementData_Pixmap,
-        ElementData_ButtonPixmap,
         /* Fonts: */
         ElementData_NameFont,
@@ -190,5 +189,4 @@
     QIcon m_icon;
     QString m_strName;
-    QIcon m_buttonIcon;
     bool m_fClosed;
     UIGraphicsRotatorButton *m_pButton;
Index: /trunk/src/VBox/Frontends/VirtualBox/src/widgets/graphics/UIGraphicsButton.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/widgets/graphics/UIGraphicsButton.cpp	(revision 42794)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/widgets/graphics/UIGraphicsButton.cpp	(revision 42795)
@@ -21,10 +21,17 @@
 #include <QPainter>
 #include <QGraphicsSceneMouseEvent>
+#include <QPropertyAnimation>
 
 /* GUI includes: */
 #include "UIGraphicsButton.h"
 
-UIGraphicsButton::UIGraphicsButton(QIGraphicsWidget *pParent)
+UIGraphicsButton::UIGraphicsButton(QIGraphicsWidget *pParent, const QIcon &icon)
     : QIGraphicsWidget(pParent)
+    , m_icon(icon)
+    , m_buttonType(UIGraphicsButtonType_Iconified)
+    , m_pAnimation(0)
+    , m_fParentSelected(false)
+    , m_fHovered(false)
+    , m_iColor(-1)
 {
     /* Refresh finally: */
@@ -32,10 +39,29 @@
 }
 
-void UIGraphicsButton::setIcon(const QIcon &icon)
-{
-    /* Remember icon: */
-    m_icon = icon;
-    /* Relayout/redraw button: */
+UIGraphicsButton::UIGraphicsButton(QIGraphicsWidget *pParent, UIGraphicsButtonType buttonType)
+    : QIGraphicsWidget(pParent)
+    , m_buttonType(buttonType)
+    , m_pAnimation(0)
+    , m_fParentSelected(false)
+    , m_fHovered(false)
+    , m_iColor(-1)
+{
+    /* Refresh finally: */
     refresh();
+
+    /* Prepare animation: */
+    setAcceptHoverEvents(true);
+    m_pAnimation = new QPropertyAnimation(this, "color", this);
+    m_pAnimation->setDuration(1000);
+    m_pAnimation->setLoopCount(-1);
+    reconfigureAnimation();
+}
+
+void UIGraphicsButton::setParentSelected(bool fParentSelected)
+{
+    if (m_fParentSelected == fParentSelected)
+        return;
+    m_fParentSelected = fParentSelected;
+    reconfigureAnimation();
 }
 
@@ -71,14 +97,81 @@
 void UIGraphicsButton::paint(QPainter *pPainter, const QStyleOptionGraphicsItem* /* pOption */, QWidget* /* pWidget = 0 */)
 {
-    /* Variables: */
+    /* Prepare variables: */
     int iMargin = data(GraphicsButton_Margin).toInt();
+    QIcon icon = data(GraphicsButton_Icon).value<QIcon>();
     QSize iconSize = data(GraphicsButton_IconSize).toSize();
-    QIcon icon = data(GraphicsButton_Icon).value<QIcon>();
-
-    /* Draw pixmap: */
-    pPainter->drawPixmap(/* Pixmap rectangle: */
-                         QRect(QPoint(iMargin, iMargin), iconSize),
-                         /* Pixmap size: */
-                         icon.pixmap(iconSize));
+
+    /* Which type button has: */
+    switch (m_buttonType)
+    {
+        case UIGraphicsButtonType_Iconified:
+        {
+            /* Just draw the pixmap: */
+            pPainter->drawPixmap(QRect(QPoint(iMargin, iMargin), iconSize), icon.pixmap(iconSize));
+            break;
+        }
+        case UIGraphicsButtonType_DirectArrow:
+        {
+            /* Prepare variables: */
+            QPalette pal = palette();
+            QColor windowColor = pal.color(QPalette::Window);
+
+            /* Setup: */
+            pPainter->setRenderHint(QPainter::Antialiasing);
+            QPen pen = pPainter->pen();
+            pen.setColor(windowColor.darker(color()));
+            pen.setWidth(2);
+            pen.setCapStyle(Qt::RoundCap);
+
+            /* Draw path: */
+            QPainterPath circlePath;
+            circlePath.moveTo(iMargin, iMargin);
+            circlePath.lineTo(iMargin + iconSize.width() / 2, iMargin);
+            circlePath.arcTo(QRectF(circlePath.currentPosition(), iconSize).translated(-iconSize.width() / 2, 0), 90, -180);
+            circlePath.lineTo(iMargin, iMargin + iconSize.height());
+            circlePath.closeSubpath();
+            pPainter->strokePath(circlePath, pen);
+
+            /* Draw triangle: */
+            QPainterPath linePath;
+            linePath.moveTo(iMargin + 5, iMargin + 5);
+            linePath.lineTo(iMargin + iconSize.height() - 5, iMargin + iconSize.width() / 2);
+            linePath.lineTo(iMargin + 5, iMargin + iconSize.width() - 5);
+            pPainter->strokePath(linePath, pen);
+            break;
+        }
+        case UIGraphicsButtonType_RoundArrow:
+        {
+            /* Prepare variables: */
+            QPalette pal = palette();
+            QColor windowColor = pal.color(QPalette::Window);
+
+            /* Setup: */
+            pPainter->setRenderHint(QPainter::Antialiasing);
+            QPen pen = pPainter->pen();
+            pen.setColor(windowColor.darker(color()));
+            pen.setWidth(2);
+            pen.setCapStyle(Qt::RoundCap);
+
+            /* Draw circle: */
+            QPainterPath circlePath;
+            circlePath.moveTo(iMargin, iMargin);
+            circlePath.addEllipse(QRectF(circlePath.currentPosition(), iconSize));
+            pPainter->strokePath(circlePath, pen);
+
+            /* Draw triangle: */
+            QPainterPath linePath;
+            linePath.moveTo(iMargin + 5, iMargin + 5);
+            linePath.lineTo(iMargin + iconSize.height() - 5, iMargin + iconSize.width() / 2);
+            linePath.lineTo(iMargin + 5, iMargin + iconSize.width() - 5);
+            pPainter->strokePath(linePath, pen);
+            break;
+        }
+    }
+}
+
+void UIGraphicsButton::hideEvent(QHideEvent*)
+{
+    setHovered(false);
 }
 
@@ -97,4 +190,14 @@
 }
 
+void UIGraphicsButton::hoverMoveEvent(QGraphicsSceneHoverEvent*)
+{
+    setHovered(true);
+}
+
+void UIGraphicsButton::hoverLeaveEvent(QGraphicsSceneHoverEvent*)
+{
+    setHovered(false);
+}
+
 void UIGraphicsButton::refresh()
 {
@@ -105,2 +208,43 @@
 }
 
+void UIGraphicsButton::reconfigureAnimation()
+{
+    setColor(m_fParentSelected ? 105 : 140);
+    m_pAnimation->setStartValue(m_fParentSelected ? 105 : 140);
+    m_pAnimation->setEndValue(m_fParentSelected ? 105 : 140);
+    m_pAnimation->setKeyValueAt(0.5, m_fParentSelected ? 130 : 115);
+}
+
+bool UIGraphicsButton::hovered() const
+{
+    return m_fHovered;
+}
+
+void UIGraphicsButton::setHovered(bool fHovered)
+{
+    if (m_fHovered == fHovered)
+        return;
+
+    m_fHovered = fHovered;
+    if (m_fHovered)
+    {
+        m_pAnimation->start();
+    }
+    else
+    {
+        m_pAnimation->stop();
+        setColor(m_fParentSelected ? 105 : 140);
+    }
+}
+
+int UIGraphicsButton::color() const
+{
+    return m_iColor;
+}
+
+void UIGraphicsButton::setColor(int iColor)
+{
+    m_iColor = iColor;
+    update();
+}
+
Index: /trunk/src/VBox/Frontends/VirtualBox/src/widgets/graphics/UIGraphicsButton.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/widgets/graphics/UIGraphicsButton.h	(revision 42794)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/widgets/graphics/UIGraphicsButton.h	(revision 42795)
@@ -28,4 +28,14 @@
 /* Forward declarations: */
 class QGraphicsSceneMouseEvent;
+class QGraphicsSceneHoverEvent;
+class QPropertyAnimation;
+
+/* Graphics-button types: */
+enum UIGraphicsButtonType
+{
+    UIGraphicsButtonType_Iconified,
+    UIGraphicsButtonType_DirectArrow,
+    UIGraphicsButtonType_RoundArrow
+};
 
 /* Graphics-button representation: */
@@ -33,4 +43,5 @@
 {
     Q_OBJECT;
+    Q_PROPERTY(int color READ color WRITE setColor);
 
 signals:
@@ -42,8 +53,9 @@
 
     /* Constructor: */
-    UIGraphicsButton(QIGraphicsWidget *pParent);
+    UIGraphicsButton(QIGraphicsWidget *pParent, const QIcon &icon);
+    UIGraphicsButton(QIGraphicsWidget *pParent, UIGraphicsButtonType buttonType);
 
-    /* API: Icon setter: */
-    void setIcon(const QIcon &icon);
+    /* API: Parent stuff: */
+    void setParentSelected(bool fParentSelected);
 
 protected:
@@ -66,10 +78,22 @@
     virtual void paint(QPainter *pPainter, const QStyleOptionGraphicsItem *pOption, QWidget *pWidget = 0);
 
+    /* Hide event: */
+    void hideEvent(QHideEvent *pEvent);
+
     /* Mouse handlers: */
     virtual void mousePressEvent(QGraphicsSceneMouseEvent *pEvent);
     virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent *pEvent);
+    virtual void hoverMoveEvent(QGraphicsSceneHoverEvent *pEvent);
+    virtual void hoverLeaveEvent(QGraphicsSceneHoverEvent *pEvent);
 
     /* Helpers: Update stuff: */
     virtual void refresh();
+
+    /* Helpers: Hover animation stuff: */
+    void reconfigureAnimation();
+    bool hovered() const;
+    void setHovered(bool fHovered);
+    int color() const;
+    void setColor(int iColor);
 
 private:
@@ -77,4 +101,9 @@
     /* Variables: */
     QIcon m_icon;
+    UIGraphicsButtonType m_buttonType;
+    QPropertyAnimation *m_pAnimation;
+    bool m_fParentSelected;
+    bool m_fHovered;
+    int m_iColor;
 };
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/widgets/graphics/UIGraphicsRotatorButton.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/widgets/graphics/UIGraphicsRotatorButton.cpp	(revision 42794)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/widgets/graphics/UIGraphicsRotatorButton.cpp	(revision 42795)
@@ -32,5 +32,5 @@
                                                  bool fReflected /* = false */,
                                                  int iAnimationDuration /* = 300 */)
-    : UIGraphicsButton(pParent)
+    : UIGraphicsButton(pParent, UIGraphicsButtonType_RoundArrow)
     , m_fReflected(fReflected)
     , m_state(fToggled ? UIGraphicsRotatorButtonState_Rotated : UIGraphicsRotatorButtonState_Default)
@@ -102,4 +102,7 @@
     /* Start state-machine: */
     m_pAnimationMachine->start();
+
+    /* Refresh: */
+    refresh();
 }
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/widgets/graphics/UIGraphicsZoomButton.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/widgets/graphics/UIGraphicsZoomButton.cpp	(revision 42794)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/widgets/graphics/UIGraphicsZoomButton.cpp	(revision 42795)
@@ -28,6 +28,6 @@
 #include "UIGraphicsZoomButton.h"
 
-UIGraphicsZoomButton::UIGraphicsZoomButton(QIGraphicsWidget *pParent, int iDirection)
-    : UIGraphicsButton(pParent)
+UIGraphicsZoomButton::UIGraphicsZoomButton(QIGraphicsWidget *pParent, const QIcon &icon, int iDirection)
+    : UIGraphicsButton(pParent, icon)
     , m_iIndent(4)
     , m_iDirection(iDirection)
Index: /trunk/src/VBox/Frontends/VirtualBox/src/widgets/graphics/UIGraphicsZoomButton.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/widgets/graphics/UIGraphicsZoomButton.h	(revision 42794)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/widgets/graphics/UIGraphicsZoomButton.h	(revision 42795)
@@ -54,5 +54,5 @@
 
     /* Constructor: */
-    UIGraphicsZoomButton(QIGraphicsWidget *pParent, int iDirection);
+    UIGraphicsZoomButton(QIGraphicsWidget *pParent, const QIcon &icon, int iDirection);
 
     /* API: Zoom stuff: */
