Index: /trunk/src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooserModel.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooserModel.cpp	(revision 86650)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooserModel.cpp	(revision 86651)
@@ -1658,8 +1658,9 @@
 void UIChooserModel::buildTreeForMainRoot(bool fPreserveSelection /* = false */)
 {
-    /* Remember first selected item if requested: */
-    QString strSelectedItemDefinition;
-    if (fPreserveSelection && firstSelectedItem())
-        strSelectedItemDefinition = firstSelectedItem()->definition();
+    /* Remember all selected items if requested: */
+    QStringList selectedItemDefinitions;
+    if (fPreserveSelection && !selectedItems().isEmpty())
+        foreach (UIChooserItem *pSelectedItem, selectedItems())
+            selectedItemDefinitions << pSelectedItem->definition();
 
     /* Cleanup previous tree if exists: */
@@ -1677,8 +1678,16 @@
     updateTreeForMainRoot();
 
-    /* Restore selection if requested: */
+    /* Restore all selected items if requested: */
     if (fPreserveSelection)
     {
-        setSelectedItem(strSelectedItemDefinition);
+        QList<UIChooserItem*> selectedItems;
+        foreach (const QString &strSelectedItemDefinition, selectedItemDefinitions)
+        {
+            UIChooserItem *pSelectedItem = searchItemByDefinition(strSelectedItemDefinition);
+            if (pSelectedItem)
+                selectedItems << pSelectedItem;
+        }
+        setSelectedItems(selectedItems);
+        setCurrentItem(firstSelectedItem());
         makeSureAtLeastOneItemSelected();
     }
