Index: /trunk/src/VBox/Frontends/VirtualBox/src/medium/UIMediumManager.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/medium/UIMediumManager.cpp	(revision 50711)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/medium/UIMediumManager.cpp	(revision 50712)
@@ -422,4 +422,5 @@
     , m_pCenterWidget(pCenterWidget)
     , m_fRefresh(fRefresh)
+    , m_fPreventChangeCurrentItem(false)
     , m_fInaccessibleHD(false)
     , m_fInaccessibleCD(false)
@@ -475,6 +476,16 @@
         return;
 
-    /* Create UIMediumItem for corresponding 'medium': */
-    createMediumItem(medium);
+    /* Create medium-item for corresponding medium: */
+    UIMediumItem *pMediumItem = createMediumItem(medium);
+    AssertPtrReturnVoid(pMediumItem);
+
+    /* If medium-item change allowed and
+     * 1. medium-enumeration is not currently in progress or
+     * 2. if there is no currently medium-item selected
+     * we have to choose newly added medium-item as current one: */
+    if (   !m_fPreventChangeCurrentItem
+        && (   !vboxGlobal().isMediumEnumerationInProgress()
+            || !mediumItem(medium.type())))
+        setCurrentItem(treeWidget(medium.type()), pMediumItem);
 }
 
@@ -1087,7 +1098,9 @@
     pTreeWidgetFD->clear();
 
-    /* Create medium-items: */
+    /* Create medium-items (do not change current one): */
+    m_fPreventChangeCurrentItem = true;
     foreach (const QString &strMediumID, vboxGlobal().mediumIDs())
         sltHandleMediumCreated(strMediumID);
+    m_fPreventChangeCurrentItem = false;
 
     /* Select first item as current one if nothing selected: */
@@ -1445,12 +1458,10 @@
 }
 
-void UIMediumManager::createMediumItem(const UIMedium &medium)
+UIMediumItem* UIMediumManager::createMediumItem(const UIMedium &medium)
 {
     /* Get medium type: */
     UIMediumType type = medium.type();
-    /* Get corresponding tree-widget: */
-    QTreeWidget *pTreeWidget = treeWidget(type);
-
-    /* Prepare medium-item: */
+
+    /* Create medium-item: */
     UIMediumItem *pMediumItem = 0;
     switch (type)
@@ -1460,5 +1471,5 @@
         {
             pMediumItem = createHardDiskItem(mTwHD, medium);
-            AssertPtrReturnVoid(pMediumItem);
+            AssertPtrReturn(pMediumItem, 0);
             if (pMediumItem->id() == m_strSelectedIdHD)
             {
@@ -1473,5 +1484,5 @@
             pMediumItem = new UIMediumItemCD(medium, mTwCD);
             LogRel2(("UIMediumManager: Optical medium-item with ID={%s} created.\n", medium.id().toAscii().constData()));
-            AssertPtrReturnVoid(pMediumItem);
+            AssertPtrReturn(pMediumItem, 0);
             if (pMediumItem->id() == m_strSelectedIdCD)
             {
@@ -1486,5 +1497,5 @@
             pMediumItem = new UIMediumItemFD(medium, mTwFD);
             LogRel2(("UIMediumManager: Floppy medium-item with ID={%s} created.\n", medium.id().toAscii().constData()));
-            AssertPtrReturnVoid(pMediumItem);
+            AssertPtrReturn(pMediumItem, 0);
             if (pMediumItem->id() == m_strSelectedIdFD)
             {
@@ -1496,19 +1507,15 @@
         default: AssertMsgFailed(("Medium-type unknown: %d\n", type)); break;
     }
-    AssertPtrReturnVoid(pMediumItem);
+    AssertPtrReturn(pMediumItem, 0);
 
     /* Update tab-icons: */
     updateTabIcons(pMediumItem, Action_Add);
-
-    /* If medium-enumeration is not currently in progress or
-     * if there is no current medium-item yet selected
-     * we have to choose newly added medium-item as current one: */
-    if (   !vboxGlobal().isMediumEnumerationInProgress()
-        || !pTreeWidget->currentItem())
-        setCurrentItem(pTreeWidget, pMediumItem);
 
     /* Re-fetch medium-item if it is current one created: */
     if (pMediumItem == mediumItem(type))
         refetchCurrentMediumItem(type);
+
+    /* Return created medium-item: */
+    return pMediumItem;
 }
 
@@ -1518,10 +1525,8 @@
     UIMediumType type = medium.type();
 
-    /* Search for existing medium-item: */
+    /* Search for existing medium-item, create if was not found: */
     UIMediumItem *pMediumItem = searchItem(treeWidget(type), CheckIfSuitableByID(medium.id()));
-
-    /* Create medium-item (if it was not found): */
-    if (!pMediumItem)
-        return createMediumItem(medium);
+    if (!pMediumItem) pMediumItem = createMediumItem(medium);
+    AssertPtrReturnVoid(pMediumItem);
 
     /* Update medium-item: */
Index: /trunk/src/VBox/Frontends/VirtualBox/src/medium/UIMediumManager.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/medium/UIMediumManager.h	(revision 50711)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/medium/UIMediumManager.h	(revision 50712)
@@ -158,5 +158,5 @@
 
     /** Creates UIMediumItem for corresponding @a medium. */
-    void createMediumItem(const UIMedium &medium);
+    UIMediumItem* createMediumItem(const UIMedium &medium);
     /** Updates UIMediumItem for corresponding @a medium. */
     void updateMediumItem(const UIMedium &medium);
@@ -212,4 +212,5 @@
     QWidget *m_pCenterWidget;
     bool m_fRefresh;
+    bool m_fPreventChangeCurrentItem;
 
     /* Variables: Tab-widget stuff: */
