Index: /trunk/src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooserItemGroup.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooserItemGroup.cpp	(revision 86651)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooserItemGroup.cpp	(revision 86652)
@@ -145,4 +145,14 @@
     /* Relayout model: */
     model()->updateLayout();
+}
+
+int UIChooserItemGroup::scrollingValue() const
+{
+    return m_pScrollArea->scrollingValue();
+}
+
+void UIChooserItemGroup::setScrollingValue(int iValue)
+{
+    m_pScrollArea->setScrollingValue(iValue);
 }
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooserItemGroup.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooserItemGroup.h	(revision 86651)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooserItemGroup.h	(revision 86652)
@@ -96,4 +96,8 @@
     /** @name Navigation stuff.
       * @{ */
+        /** Returns scrolling location value in pixels. */
+        int scrollingValue() const;
+        /** Defines scrolling location @a iValue in pixels. */
+        void setScrollingValue(int iValue);
         /** Performs scrolling by @a iDelta pixels. */
         void scrollBy(int iDelta);
Index: /trunk/src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooserModel.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooserModel.cpp	(revision 86651)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooserModel.cpp	(revision 86652)
@@ -1658,4 +1658,7 @@
 void UIChooserModel::buildTreeForMainRoot(bool fPreserveSelection /* = false */)
 {
+    /* Remember scrolling location: */
+    const int iScrollLocation = m_pRoot ? m_pRoot->toGroupItem()->scrollingValue() : 0;
+
     /* Remember all selected items if requested: */
     QStringList selectedItemDefinitions;
@@ -1692,4 +1695,7 @@
         makeSureAtLeastOneItemSelected();
     }
+
+    /* Restore scrolling location: */
+    m_pRoot->toGroupItem()->setScrollingValue(iScrollLocation);
 
     /* Repeat search if search widget is visible: */
Index: /trunk/src/VBox/Frontends/VirtualBox/src/widgets/graphics/UIGraphicsScrollArea.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/widgets/graphics/UIGraphicsScrollArea.cpp	(revision 86651)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/widgets/graphics/UIGraphicsScrollArea.cpp	(revision 86652)
@@ -114,4 +114,16 @@
 }
 
+int UIGraphicsScrollArea::scrollingValue() const
+{
+    return m_pScrollBar->value();
+}
+
+void UIGraphicsScrollArea::setScrollingValue(int iValue)
+{
+    iValue = qMax(iValue, 0);
+    iValue = qMin(iValue, m_pScrollBar->maximum());
+    m_pScrollBar->setValue(iValue);
+}
+
 void UIGraphicsScrollArea::scrollBy(int iDelta)
 {
Index: /trunk/src/VBox/Frontends/VirtualBox/src/widgets/graphics/UIGraphicsScrollArea.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/widgets/graphics/UIGraphicsScrollArea.h	(revision 86651)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/widgets/graphics/UIGraphicsScrollArea.h	(revision 86652)
@@ -50,4 +50,8 @@
     QIGraphicsWidget *viewport() const;
 
+    /** Returns scrolling location value in pixels. */
+    int scrollingValue() const;
+    /** Defines scrolling location @a iValue in pixels. */
+    void setScrollingValue(int iValue);
     /** Performs scrolling by @a iDelta pixels. */
     void scrollBy(int iDelta);
