Index: trunk/src/VBox/Frontends/VirtualBox/src/manager/tools/UIToolsModel.cpp
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/manager/tools/UIToolsModel.cpp	(revision 108612)
+++ trunk/src/VBox/Frontends/VirtualBox/src/manager/tools/UIToolsModel.cpp	(revision 108613)
@@ -65,12 +65,4 @@
       * @param  fForward      Brings whether animation goes to iValue or from it. */
     UIToolItemAnimation(QObject *pTarget, const QByteArray &propertyName, QObject *pParent, bool fForward);
-
-    /** Defines the animation value. */
-    void setValue(int iValue);
-
-private:
-
-    /** Holds whether animation goes to value or from it. */
-    bool  m_fForward;
 };
 
@@ -103,7 +95,4 @@
     /** Returns animation state. */
     State state() const { return m_enmState; }
-
-    /** Fetches animation limits. */
-    void fetchAnimationLimits();
 
 private slots:
@@ -145,26 +134,4 @@
     QState *m_pStateMana;
 
-    /** Holds the instance of animation from Home to Machines. */
-    UIToolItemAnimation *m_pAnmHomeMach;
-    /** Holds the instance of animation from Home to Managers. */
-    UIToolItemAnimation *m_pAnmHomeMana;
-    /** Holds the instance of animation from Machines to Home. */
-    UIToolItemAnimation *m_pAnmMachHome;
-    /** Holds the instance of 1st animation from Machines to Managers. */
-    UIToolItemAnimation *m_pAnmMachMana1;
-    /** Holds the instance of 2nd animation from Machines to Managers. */
-    UIToolItemAnimation *m_pAnmMachMana2;
-    /** Holds the instance of animation from Managers to Home. */
-    UIToolItemAnimation *m_pAnmManaHome;
-    /** Holds the instance of 1st animation from Managers to Machines. */
-    UIToolItemAnimation *m_pAnmManaMach1;
-    /** Holds the instance of 2nd animation from Managers to Machines. */
-    UIToolItemAnimation *m_pAnmManaMach2;
-
-    /** Holds the vertical Machines tool hint. */
-    int  m_iVerticalHintMach;
-    /** Holds the vertical Managers tool hint. */
-    int  m_iVerticalHintMana;
-
     /** Holds the animation state. */
     State  m_enmState;
@@ -178,14 +145,9 @@
 UIToolItemAnimation::UIToolItemAnimation(QObject *pTarget, const QByteArray &propertyName, QObject *pParent, bool fForward)
     : QPropertyAnimation(pTarget, propertyName, pParent)
-    , m_fForward(fForward)
 {
     setEasingCurve(QEasingCurve(QEasingCurve::OutQuart));
+    setStartValue(fForward ? 0 : 100);
+    setEndValue(fForward ? 100 : 0);
     setDuration(200);
-}
-
-void UIToolItemAnimation::setValue(int iValue)
-{
-    setStartValue(m_fForward ? 0 : iValue);
-    setEndValue(m_fForward ? iValue : 0);
 }
 
@@ -202,14 +164,4 @@
     , m_pStateMach(0)
     , m_pStateMana(0)
-    , m_pAnmHomeMach(0)
-    , m_pAnmHomeMana(0)
-    , m_pAnmMachHome(0)
-    , m_pAnmMachMana1(0)
-    , m_pAnmMachMana2(0)
-    , m_pAnmManaHome(0)
-    , m_pAnmManaMach1(0)
-    , m_pAnmManaMach2(0)
-    , m_iVerticalHintMach(0)
-    , m_iVerticalHintMana(0)
     , m_enmState(State_Home)
 {
@@ -297,7 +249,4 @@
         prepareStateManagers();
     }
-
-    /* Fetch animation limits: */
-    fetchAnimationLimits();
 }
 
@@ -307,7 +256,6 @@
     if (m_pStateHome)
     {
-        /* When we entering Home state => we assigning animatedShiftMachines to 0 and animatedShiftManagers to 0: */
-        m_pStateHome->assignProperty(m_pParent, "animatedShiftMachines", 0);
-        m_pStateHome->assignProperty(m_pParent, "animatedShiftManagers", 0);
+        m_pStateHome->assignProperty(m_pParent, "animationProgressMachines", 0);
+        m_pStateHome->assignProperty(m_pParent, "animationProgressManagers", 0);
 
         /* Add Home=>Machines state transition: */
@@ -315,7 +263,7 @@
         if (pHomeToMachines)
         {
-            /* Create animation for animatedShiftMachines: */
-            m_pAnmHomeMach = new UIToolItemAnimation(m_pParent, "animatedShiftMachines", this, true);
-            pHomeToMachines->addAnimation(m_pAnmHomeMach);
+            /* Create animation for animationProgressMachines: */
+            UIToolItemAnimation *pAnmHomeMach = new UIToolItemAnimation(m_pParent, "animationProgressMachines", this, true);
+            pHomeToMachines->addAnimation(pAnmHomeMach);
         }
 
@@ -324,7 +272,7 @@
         if (pHomeToManagers)
         {
-            /* Create animation for animatedShiftManagers: */
-            m_pAnmHomeMana = new UIToolItemAnimation(m_pParent, "animatedShiftManagers", this, true);
-            pHomeToManagers->addAnimation(m_pAnmHomeMana);
+            /* Create animation for animationProgressManagers: */
+            UIToolItemAnimation *pAnmHomeMana = new UIToolItemAnimation(m_pParent, "animationProgressManagers", this, true);
+            pHomeToManagers->addAnimation(pAnmHomeMana);
         }
     }
@@ -336,7 +284,6 @@
     if (m_pStateMach)
     {
-        /* When we entering Machines state => we assigning animatedShiftMachines to m_iVerticalHintMach and animatedShiftManagers to 0: */
-        m_pStateMach->assignProperty(m_pParent, "animatedShiftMachines", m_iVerticalHintMach);
-        m_pStateMach->assignProperty(m_pParent, "animatedShiftManagers", 0);
+        m_pStateMach->assignProperty(m_pParent, "animationProgressMachines", 100);
+        m_pStateMach->assignProperty(m_pParent, "animationProgressManagers", 0);
 
         /* Add Machines=>Home state transition: */
@@ -344,7 +291,7 @@
         if (pMachinesToHome)
         {
-            /* Create animation for animatedShiftMachines: */
-            m_pAnmMachHome = new UIToolItemAnimation(m_pParent, "animatedShiftMachines", this, false);
-            pMachinesToHome->addAnimation(m_pAnmMachHome);
+            /* Create animation for animationProgressMachines: */
+            UIToolItemAnimation *pAnmMachHome = new UIToolItemAnimation(m_pParent, "animationProgressMachines", this, false);
+            pMachinesToHome->addAnimation(pAnmMachHome);
         }
 
@@ -353,11 +300,11 @@
         if (pMachinesToManagers)
         {
-            /* Create animation for animatedShiftMachines: */
-            m_pAnmMachMana1 = new UIToolItemAnimation(m_pParent, "animatedShiftMachines", this, false);
-            pMachinesToManagers->addAnimation(m_pAnmMachMana1);
-
-            /* Create animation for animatedShiftManagers: */
-            m_pAnmMachMana2 = new UIToolItemAnimation(m_pParent, "animatedShiftManagers", this, true);
-            pMachinesToManagers->addAnimation(m_pAnmMachMana2);
+            /* Create animation for animationProgressMachines: */
+            UIToolItemAnimation *pAnmMachMana1 = new UIToolItemAnimation(m_pParent, "animationProgressMachines", this, false);
+            pMachinesToManagers->addAnimation(pAnmMachMana1);
+
+            /* Create animation for animationProgressManagers: */
+            UIToolItemAnimation *pAnmMachMana2 = new UIToolItemAnimation(m_pParent, "animationProgressManagers", this, true);
+            pMachinesToManagers->addAnimation(pAnmMachMana2);
         }
     }
@@ -369,7 +316,6 @@
     if (m_pStateMana)
     {
-        /* When we entering Managers state => we assigning animatedShiftMachines to 0 and animatedShiftManagers to m_iVerticalHintMana: */
-        m_pStateMana->assignProperty(m_pParent, "animatedShiftMachines", 0);
-        m_pStateMana->assignProperty(m_pParent, "animatedShiftManagers", m_iVerticalHintMana);
+        m_pStateMana->assignProperty(m_pParent, "animationProgressMachines", 0);
+        m_pStateMana->assignProperty(m_pParent, "animationProgressManagers", 100);
 
         /* Add Managers=>Home state transition: */
@@ -377,7 +323,7 @@
         if (pManagersToHome)
         {
-            /* Create animation for animatedShiftManagers: */
-            m_pAnmManaHome = new UIToolItemAnimation(m_pParent, "animatedShiftManagers", this, false);
-            pManagersToHome->addAnimation(m_pAnmManaHome);
+            /* Create animation for animationProgressManagers: */
+            UIToolItemAnimation *pAnmManaHome = new UIToolItemAnimation(m_pParent, "animationProgressManagers", this, false);
+            pManagersToHome->addAnimation(pAnmManaHome);
         }
 
@@ -386,11 +332,11 @@
         if (pManagersToMachines)
         {
-            /* Create animation for animatedShiftMachines: */
-            m_pAnmManaMach1 = new UIToolItemAnimation(m_pParent, "animatedShiftMachines", this, true);
-            pManagersToMachines->addAnimation(m_pAnmManaMach1);
-
-            /* Create animation for animatedShiftManagers: */
-            m_pAnmManaMach2 = new UIToolItemAnimation(m_pParent, "animatedShiftManagers", this, false);
-            pManagersToMachines->addAnimation(m_pAnmManaMach2);
+            /* Create animation for animationProgressMachines: */
+            UIToolItemAnimation *pAnmManaMach1 = new UIToolItemAnimation(m_pParent, "animationProgressMachines", this, true);
+            pManagersToMachines->addAnimation(pAnmManaMach1);
+
+            /* Create animation for animationProgressManagers: */
+            UIToolItemAnimation *pAnmManaMach2 = new UIToolItemAnimation(m_pParent, "animationProgressManagers", this, false);
+            pManagersToMachines->addAnimation(pAnmManaMach2);
         }
     }
@@ -406,21 +352,4 @@
     connect(m_pStateMach, &QState::propertiesAssigned, this, &UIToolsAnimationEngine::sltHandleAnimationFinished);
     connect(m_pStateMana, &QState::propertiesAssigned, this, &UIToolsAnimationEngine::sltHandleAnimationFinished);
-}
-
-void UIToolsAnimationEngine::fetchAnimationLimits()
-{
-    /* Acquire limits from parent class: */
-    const int iVerticalHintMach = m_pParent->overallShiftMachines();
-    const int iVerticalHintMana = m_pParent->overallShiftManagers();
-
-    /* Update animation values: */
-    m_pAnmHomeMach->setValue(iVerticalHintMach);
-    m_pAnmHomeMana->setValue(iVerticalHintMana);
-    m_pAnmMachHome->setValue(iVerticalHintMach);
-    m_pAnmMachMana1->setValue(iVerticalHintMach);
-    m_pAnmMachMana2->setValue(iVerticalHintMana);
-    m_pAnmManaHome->setValue(iVerticalHintMana);
-    m_pAnmManaMach1->setValue(iVerticalHintMach);
-    m_pAnmManaMach2->setValue(iVerticalHintMana);
 }
 
@@ -537,6 +466,4 @@
         /* Update linked values: */
         recalculateOverallShifts(enmClass);
-        if (m_pAnimationEngine)
-            m_pAnimationEngine->fetchAnimationLimits();
         updateLayout();
         sltItemMinimumWidthHintChanged();
@@ -715,7 +642,18 @@
             switch (pItem->itemType())
             {
-                case UIToolType_Machines: iVerticalIndent += animatedShiftMachines(); break;
-                case UIToolType_Managers: iVerticalIndent += animatedShiftManagers(); break;
-                default: break;
+                case UIToolType_Machines:
+                {
+                    const double fRatio = (double)animationProgressMachines() / 100;
+                    iVerticalIndent += fRatio * overallShiftMachines();
+                    break;
+                }
+                case UIToolType_Managers:
+                {
+                    const double fRatio = (double)animationProgressManagers() / 100;
+                    iVerticalIndent += fRatio * overallShiftManagers();
+                    break;
+                }
+                default:
+                    break;
             }
         }
@@ -1148,5 +1086,5 @@
 }
 
-void UIToolsModel::setAnimatedShiftMachines(int iAnimatedValue)
+void UIToolsModel::setAnimationProgressMachines(int iAnimatedValue)
 {
     m_iAnimatedShiftMachines = iAnimatedValue;
@@ -1154,5 +1092,5 @@
 }
 
-void UIToolsModel::setAnimatedShiftManagers(int iAnimatedValue)
+void UIToolsModel::setAnimationProgressManagers(int iAnimatedValue)
 {
     m_iAnimatedShiftManagers = iAnimatedValue;
Index: trunk/src/VBox/Frontends/VirtualBox/src/manager/tools/UIToolsModel.h
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/manager/tools/UIToolsModel.h	(revision 108612)
+++ trunk/src/VBox/Frontends/VirtualBox/src/manager/tools/UIToolsModel.h	(revision 108613)
@@ -53,6 +53,6 @@
 {
     Q_OBJECT;
-    Q_PROPERTY(int animatedShiftMachines READ animatedShiftMachines WRITE setAnimatedShiftMachines);
-    Q_PROPERTY(int animatedShiftManagers READ animatedShiftManagers WRITE setAnimatedShiftManagers);
+    Q_PROPERTY(int animationProgressMachines READ animationProgressMachines WRITE setAnimationProgressMachines);
+    Q_PROPERTY(int animationProgressManagers READ animationProgressManagers WRITE setAnimationProgressManagers);
 
 signals:
@@ -171,9 +171,4 @@
         /** Updates layout. */
         void updateLayout();
-
-        /** Returns the Machines overall shift. */
-        int overallShiftMachines() const { return m_iOverallShiftMachines; }
-        /** Returns the Managers overall shift. */
-        int overallShiftManagers() const { return m_iOverallShiftManagers; }
     /** @} */
 
@@ -237,16 +232,20 @@
     /** @name Animation stuff.
      * @{ */
+        /** Returns Machines overall shift. */
+        int overallShiftMachines() const { return m_iOverallShiftMachines; }
+        /** Returns Managers overall shift. */
+        int overallShiftManagers() const { return m_iOverallShiftManagers; }
         /** Recalculates overall shifts.
           * @param  enmClass  Brings tool-class for which shift should be recalculated. */
         void recalculateOverallShifts(UIToolClass enmClass = UIToolClass_Invalid);
 
-        /** Returns the Machines animated shift. */
-        int animatedShiftMachines() const { return m_iAnimatedShiftMachines; }
-        /** Returns the Managers animated shift. */
-        int animatedShiftManagers() const { return m_iAnimatedShiftManagers; }
-        /** Defines the Machines animated @a iShift. */
-        void setAnimatedShiftMachines(int iShift);
-        /** Defines the Managers animated @a iShift. */
-        void setAnimatedShiftManagers(int iShift);
+        /** Returns Machines animation progress. */
+        int animationProgressMachines() const { return m_iAnimatedShiftMachines; }
+        /** Returns Managers animation progress. */
+        int animationProgressManagers() const { return m_iAnimatedShiftManagers; }
+        /** Defines Machines animation @a iProgress. */
+        void setAnimationProgressMachines(int iProgress);
+        /** Defines Managers animation @a iProgress. */
+        void setAnimationProgressManagers(int iProgress);
     /** @} */
 
