Index: trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/chooser/UIGChooserItem.cpp
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/chooser/UIGChooserItem.cpp	(revision 42688)
+++ trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/chooser/UIGChooserItem.cpp	(revision 42689)
@@ -43,5 +43,5 @@
     , m_pForwardAnimation(0)
     , m_pBackwardAnimation(0)
-    , m_iAnimationDuration(300)
+    , m_iAnimationDuration(400)
     , m_iDefaultDarkness(103)
     , m_iHighlightDarkness(90)
@@ -186,5 +186,5 @@
 void UIGChooserItem::hoverMoveEvent(QGraphicsSceneHoverEvent*)
 {
-    if (m_fHovered != true)
+    if (!m_fHovered)
     {
         m_fHovered = true;
@@ -195,5 +195,5 @@
 void UIGChooserItem::hoverLeaveEvent(QGraphicsSceneHoverEvent*)
 {
-    if (m_fHovered != false)
+    if (m_fHovered)
     {
         m_fHovered = false;
Index: trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/details/UIGDetailsElement.cpp
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/details/UIGDetailsElement.cpp	(revision 42688)
+++ trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/details/UIGDetailsElement.cpp	(revision 42689)
@@ -23,4 +23,7 @@
 #include <QTextLayout>
 #include <QGraphicsSceneMouseEvent>
+#include <QStateMachine>
+#include <QPropertyAnimation>
+#include <QSignalTransition>
 
 /* GUI includes: */
@@ -45,4 +48,11 @@
     , m_fNameHoveringAccessible(false)
     , m_fNameHovered(false)
+    , m_pHighlightMachine(0)
+    , m_pForwardAnimation(0)
+    , m_pBackwardAnimation(0)
+    , m_iAnimationDuration(400)
+    , m_iDefaultDarkness(103)
+    , m_iHighlightDarkness(90)
+    , m_iGradient(m_iDefaultDarkness)
 {
     /* Prepare element: */
@@ -350,4 +360,34 @@
 void UIGDetailsElement::prepareElement()
 {
+    /* Create highlight machine: */
+    m_pHighlightMachine = new QStateMachine(this);
+    /* Create 'default' state: */
+    QState *pStateDefault = new QState(m_pHighlightMachine);
+    /* Create 'highlighted' state: */
+    QState *pStateHighlighted = new QState(m_pHighlightMachine);
+
+    /* Forward animation: */
+    m_pForwardAnimation = new QPropertyAnimation(this, "gradient", this);
+    m_pForwardAnimation->setDuration(m_iAnimationDuration);
+    m_pForwardAnimation->setStartValue(m_iDefaultDarkness);
+    m_pForwardAnimation->setEndValue(m_iHighlightDarkness);
+
+    /* Backward animation: */
+    m_pBackwardAnimation = new QPropertyAnimation(this, "gradient", this);
+    m_pBackwardAnimation->setDuration(m_iAnimationDuration);
+    m_pBackwardAnimation->setStartValue(m_iHighlightDarkness);
+    m_pBackwardAnimation->setEndValue(m_iDefaultDarkness);
+
+    /* Add state transitions: */
+    QSignalTransition *pDefaultToHighlighted = pStateDefault->addTransition(this, SIGNAL(sigHoverEnter()), pStateHighlighted);
+    pDefaultToHighlighted->addAnimation(m_pForwardAnimation);
+    QSignalTransition *pHighlightedToDefault = pStateHighlighted->addTransition(this, SIGNAL(sigHoverLeave()), pStateDefault);
+    pHighlightedToDefault->addAnimation(m_pBackwardAnimation);
+
+    /* Initial state is 'default': */
+    m_pHighlightMachine->setInitialState(pStateDefault);
+    /* Start state-machine: */
+    m_pHighlightMachine->start();
+
     connect(gVBoxEvents, SIGNAL(sigMachineStateChange(QString, KMachineState)), this, SLOT(sltMachineStateChange(QString)));
     connect(gVBoxEvents, SIGNAL(sigMachineDataChange(QString)), this, SLOT(sltShouldWeUpdateAppearance(QString)));
@@ -480,5 +520,7 @@
                     /* Header height: */
                     2 * data(ElementData_Margin).toInt() +
-                    data(ElementData_HeaderSize).toSize().height());
+                    data(ElementData_HeaderSize).toSize().height(),
+                    /* Gradient color: */
+                    gradient());
 }
 
@@ -587,5 +629,6 @@
 
 /* static */
-void UIGDetailsElement::paintBackground(QPainter *pPainter, const QRect &rect, int iRadius, int iHeaderHeight)
+void UIGDetailsElement::paintBackground(QPainter *pPainter, const QRect &rect,
+                                        int iRadius, int iHeaderHeight, int iGradient)
 {
     /* Save painter: */
@@ -622,5 +665,5 @@
     QLinearGradient tGradient(tRect.bottomLeft(), tRect.topLeft());
     tGradient.setColorAt(0, windowColor.darker(110));
-    tGradient.setColorAt(1, windowColor.darker(103));
+    tGradient.setColorAt(1, windowColor.darker(iGradient));
 
     /* Paint all the stuff: */
@@ -642,5 +685,5 @@
     {
         m_fHovered = true;
-        update();
+        emit sigHoverEnter();
     }
 
@@ -655,5 +698,5 @@
     {
         m_fHovered = false;
-        update();
+        emit sigHoverLeave();
     }
 
Index: trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/details/UIGDetailsElement.h
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/details/UIGDetailsElement.h	(revision 42688)
+++ trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/details/UIGDetailsElement.h	(revision 42689)
@@ -32,4 +32,6 @@
 class UIGraphicsRotatorButton;
 class QTextLayout;
+class QStateMachine;
+class QPropertyAnimation;
 
 /* Typedefs: */
@@ -43,7 +45,12 @@
 {
     Q_OBJECT;
+    Q_PROPERTY(int gradient READ gradient WRITE setGradient);
     Q_PROPERTY(int additionalHeight READ additionalHeight WRITE setAdditionalHeight);
 
 signals:
+
+    /* Notifiers: Hover stuff: */
+    void sigHoverEnter();
+    void sigHoverLeave();
 
     /* Notifier: Toggle stuff: */
@@ -123,4 +130,8 @@
     void updateLayout();
 
+    /* Helpers: Hover stuff: */
+    int gradient() const { return m_iGradient; }
+    void setGradient(int iGradient) { m_iGradient = iGradient; update(); }
+
     /* Helpers: Animation stuff: */
     void setAdditionalHeight(int iAdditionalHeight);
@@ -159,5 +170,6 @@
     void paintDecorations(QPainter *pPainter, const QStyleOptionGraphicsItem *pOption);
     void paintElementInfo(QPainter *pPainter, const QStyleOptionGraphicsItem *pOption);
-    static void paintBackground(QPainter *pPainter, const QRect &rect, int iRadius, int iHeaderHeight);
+    static void paintBackground(QPainter *pPainter, const QRect &rect,
+                                int iRadius, int iHeaderHeight, int iGradient);
 
     /* Handlers: Mouse stuff: */
@@ -189,7 +201,16 @@
     int m_iAdditionalHeight;
     int m_iCornerRadius;
+
+    /* Variables: Hover stuff: */
     bool m_fHovered;
     bool m_fNameHoveringAccessible;
     bool m_fNameHovered;
+    QStateMachine *m_pHighlightMachine;
+    QPropertyAnimation *m_pForwardAnimation;
+    QPropertyAnimation *m_pBackwardAnimation;
+    int m_iAnimationDuration;
+    int m_iDefaultDarkness;
+    int m_iHighlightDarkness;
+    int m_iGradient;
 };
 
Index: trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/details/UIGDetailsItem.cpp
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/details/UIGDetailsItem.cpp	(revision 42688)
+++ trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/details/UIGDetailsItem.cpp	(revision 42689)
@@ -86,14 +86,4 @@
 }
 
-#if 0
-void UIGDetailsItem::hoverEnterEvent(QGraphicsSceneHoverEvent*)
-{
-}
-
-void UIGDetailsItem::hoverLeaveEvent(QGraphicsSceneHoverEvent*)
-{
-}
-#endif
-
 /* static */
 void UIGDetailsItem::configurePainterShape(QPainter *pPainter,
Index: trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/details/UIGDetailsItem.h
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/details/UIGDetailsItem.h	(revision 42688)
+++ trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/details/UIGDetailsItem.h	(revision 42689)
@@ -76,11 +76,4 @@
 protected:
 
-#if 0
-    /* Hover-enter event: */
-    void hoverEnterEvent(QGraphicsSceneHoverEvent *pEvent);
-    /* Hover-leave event: */
-    void hoverLeaveEvent(QGraphicsSceneHoverEvent *pEvent);
-#endif
-
     /* Helpers: Paint stuff: */
     static void configurePainterShape(QPainter *pPainter, const QStyleOptionGraphicsItem *pOption, int iRadius);
