Index: /trunk/src/VBox/Frontends/VirtualBox/src/medium/UIMediumManager.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/medium/UIMediumManager.cpp	(revision 50362)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/medium/UIMediumManager.cpp	(revision 50363)
@@ -273,5 +273,5 @@
 }
 
-void UIMediumManager::refreshAll()
+void UIMediumManager::sltRefreshAll()
 {
     /* Start medium-enumeration: */
@@ -293,5 +293,5 @@
         return;
 
-    /* Create UIMediumItem for corresponding UIMedium: */
+    /* Create UIMediumItem for corresponding 'medium': */
     createMediumItem(medium);
 }
@@ -299,29 +299,6 @@
 void UIMediumManager::sltHandleMediumDeleted(const QString &strMediumID)
 {
-    /* Get tree-widget / medium-item: */
-    QList<UIMediumType> types;
-    types << UIMediumType_HardDisk << UIMediumType_DVD << UIMediumType_Floppy;
-    QTreeWidget *pTreeWidget = 0;
-    UIMediumItem *pMediumItem = 0;
-    foreach (UIMediumType type, types)
-    {
-        pTreeWidget = treeWidget(type);
-        pMediumItem = searchItem(pTreeWidget, CheckIfSuitableByID(strMediumID));
-        if (pMediumItem)
-            break;
-    }
-
-    /* Skip further actions if medium-item was not found: */
-    if (!pMediumItem)
-        return;
-
-    /* Update tab-icons: */
-    updateTabIcons(pMediumItem, ItemAction_Removed);
-
-    /* Delete medium-item: */
-    delete pMediumItem;
-
-    /* Make sure 'current' or at least 'first available' medium-item is currently selected, if any: */
-    setCurrentItem(pTreeWidget, pTreeWidget->currentItem() ? pTreeWidget->currentItem() : pTreeWidget->topLevelItem(0));
+    /* Delete UIMediumItem for corresponding 'strMediumID': */
+    deleteMediumItem(strMediumID);
 }
 
@@ -367,5 +344,5 @@
         return;
 
-    /* Update UIMediumItem for corresponding UIMedium: */
+    /* Update UIMediumItem for corresponding 'medium': */
     updateMediumItem(medium);
 
@@ -801,5 +778,5 @@
                                                           ":/refresh_22px.png", ":/refresh_16px.png",
                                                           ":/refresh_disabled_22px.png", ":/refresh_disabled_16px.png"));
-        connect(m_pActionRefresh, SIGNAL(triggered()), this, SLOT(refreshAll()));
+        connect(m_pActionRefresh, SIGNAL(triggered()), this, SLOT(sltRefreshAll()));
     }
 }
@@ -1351,12 +1328,17 @@
     /* Full refresh if there is at least one item present: */
     if (mTwHD->topLevelItemCount() || mTwCD->topLevelItemCount() || mTwFD->topLevelItemCount())
-        refreshAll();
+        sltRefreshAll();
 }
 
 void UIMediumManager::createMediumItem(const UIMedium &medium)
 {
+    /* Get medium type: */
+    UIMediumType type = medium.type();
+    /* Get corresponding tree-widget: */
+    QTreeWidget *pTreeWidget = treeWidget(type);
+
     /* Prepare medium-item: */
     UIMediumItem *pMediumItem = 0;
-    switch (medium.type())
+    switch (type)
     {
         /* Of hard-drive type: */
@@ -1398,5 +1380,5 @@
             break;
         }
-        default: AssertFailed();
+        default: AssertMsgFailed(("Medium-type unknown: %d\n", type)); break;
     }
     AssertPtrReturnVoid(pMediumItem);
@@ -1405,16 +1387,13 @@
     updateTabIcons(pMediumItem, ItemAction_Added);
 
-    /* If medium-enumeration is not currently in progress we have to select the
-     * newly added item as the 'current-item' (it seems new image was added): */
-    if (!vboxGlobal().isMediumEnumerationInProgress())
-        setCurrentItem(treeWidget(medium.type()), pMediumItem);
-
-    /* If no 'current-item' yet selected
-     * we have to choose newly added as the 'current-item': */
-    if (!treeWidget(medium.type())->currentItem())
-        setCurrentItem(treeWidget(medium.type()), pMediumItem);
-
-    /* Update linked stuff if that was 'current-item' added: */
-    if (pMediumItem == currentTreeWidget()->currentItem())
+    /* 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);
+
+    /* Update linked stuff if that was current medium-item created: */
+    if (pMediumItem == currentMediumItem())
         sltHandleCurrentItemChanged(pMediumItem);
 }
@@ -1422,12 +1401,12 @@
 void UIMediumManager::updateMediumItem(const UIMedium &medium)
 {
-    /* Search for the existing medium-item: */
+    /* Search for existing medium-item: */
     UIMediumItem *pMediumItem = searchItem(treeWidget(medium.type()), CheckIfSuitableByID(medium.id()));
 
-    /* Create new if was not found: */
+    /* Create medium-item (if it was not found): */
     if (!pMediumItem)
         return createMediumItem(medium);
 
-    /* Update otherwise: */
+    /* Update medium-item: */
     pMediumItem->setMedium(medium);
     LogRel2(("UIMediumManager: Medium-item with ID={%s} updated.\n", medium.id().toAscii().constData()));
@@ -1436,7 +1415,41 @@
     updateTabIcons(pMediumItem, ItemAction_Updated);
 
-    /* Update linked stuff if that was 'current-item' updated: */
-    if (pMediumItem == currentTreeWidget()->currentItem())
+    /* Update linked stuff if that was current medium-item updated: */
+    if (pMediumItem == currentMediumItem())
         sltHandleCurrentItemChanged(pMediumItem);
+}
+
+void UIMediumManager::deleteMediumItem(const QString &strMediumID)
+{
+    /* Search for corresponding tree-widget: */
+    QList<UIMediumType> types;
+    types << UIMediumType_HardDisk << UIMediumType_DVD << UIMediumType_Floppy;
+    QTreeWidget *pTreeWidget = 0;
+    UIMediumItem *pMediumItem = 0;
+    foreach (UIMediumType type, types)
+    {
+        /* Get iterated tree-widget: */
+        pTreeWidget = treeWidget(type);
+        /* Search for existing medium-item: */
+        pMediumItem = searchItem(pTreeWidget, CheckIfSuitableByID(strMediumID));
+        if (pMediumItem)
+            break;
+    }
+
+    /* Ignore medium-item (if it was not found): */
+    if (!pMediumItem)
+        return;
+
+    /* Update tab-icons: */
+    updateTabIcons(pMediumItem, ItemAction_Removed);
+
+    /* Delete medium-item: */
+    delete pMediumItem;
+    LogRel2(("UIMediumManager: Medium-item with ID={%s} deleted.\n", strMediumID.toAscii().constData()));
+
+    /* If there is no 'current' medium-item now selected
+     * we have to choose first-available medium-item as 'current' one: */
+    if (!pTreeWidget->currentItem())
+        setCurrentItem(pTreeWidget, pTreeWidget->topLevelItem(0));
 }
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/medium/UIMediumManager.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/medium/UIMediumManager.h	(revision 50362)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/medium/UIMediumManager.h	(revision 50363)
@@ -65,10 +65,8 @@
     static void showModeless(QWidget *pCenterWidget, bool fRefresh = true);
 
-public slots:
-
-    /* Handler: Refresh stuff: */
-    void refreshAll();
-
 private slots:
+
+    /** Fully refreshes medium manager contents. */
+    void sltRefreshAll();
 
     /* Handlers: Medium-processing stuff: */
@@ -143,8 +141,10 @@
     void retranslateUi();
 
-    /** Creates UIMediumItem for corresponding UIMedium. */
+    /** Creates UIMediumItem for corresponding @a medium. */
     void createMediumItem(const UIMedium &medium);
-    /** Updates UIMediumItem for corresponding UIMedium. */
+    /** Updates UIMediumItem for corresponding @a medium. */
     void updateMediumItem(const UIMedium &medium);
+    /** Deletes UIMediumItem for corresponding @a strMediumID. */
+    void deleteMediumItem(const QString &strMediumID);
 
     /* Helpers: Medium-modification stuff: */
