Index: trunk/src/VBox/Frontends/VirtualBox/src/globals/UIMessageCenter.cpp
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/globals/UIMessageCenter.cpp	(revision 45314)
+++ trunk/src/VBox/Frontends/VirtualBox/src/globals/UIMessageCenter.cpp	(revision 45315)
@@ -917,5 +917,5 @@
 
 void UIMessageCenter::cannotChangeMediumType(const CMedium &medium, KMediumType oldMediumType, KMediumType newMediumType,
-                                             QWidget *pParent /*= 0*/)
+                                             QWidget *pParent /*= 0*/) const
 {
     message(pParent ? pParent : mainWindowShown(), MessageType_Error,
@@ -925,5 +925,5 @@
 }
 
-bool UIMessageCenter::confirmMediumRelease(const UIMedium &medium, const QString &strUsage, QWidget *pParent /*= 0*/)
+bool UIMessageCenter::confirmMediumRelease(const UIMedium &medium, const QString &strUsage, QWidget *pParent /*= 0*/) const
 {
     /* Prepare the message: */
@@ -958,5 +958,5 @@
 }
 
-bool UIMessageCenter::confirmMediumRemoval(const UIMedium &medium, QWidget *pParent /*= 0*/)
+bool UIMessageCenter::confirmMediumRemoval(const UIMedium &medium, QWidget *pParent /*= 0*/) const
 {
     /* Prepare the message: */
@@ -1008,5 +1008,5 @@
 }
 
-int UIMessageCenter::confirmDeleteHardDiskStorage(const QString &strLocation, QWidget *pParent /*= 0*/)
+int UIMessageCenter::confirmDeleteHardDiskStorage(const QString &strLocation, QWidget *pParent /*= 0*/) const
 {
     return message(pParent ? pParent : mainWindowShown(), MessageType_Question,
@@ -1029,18 +1029,21 @@
 }
 
-void UIMessageCenter::cannotDeleteHardDiskStorage(const CMedium &medium, const CProgress &progress, QWidget *pParent /*= 0*/)
-{
-    /* Preserve error-info: */
-    QString strErrorInfo = !medium.isOk() ? formatErrorInfo(medium) :
-                           !progress.isOk() ? formatErrorInfo(progress) :
-                           formatErrorInfo(progress.GetErrorInfo());
-    /* Show the message: */
+void UIMessageCenter::cannotDeleteHardDiskStorage(const CMedium &medium, const QString &strLocation, QWidget *pParent /*= 0*/) const
+{
     message(pParent ? pParent : mainWindowShown(), MessageType_Error,
             tr("Failed to delete the storage unit of the hard disk <b>%1</b>.")
-               .arg(medium.GetLocation()),
-            strErrorInfo);
-}
-
-void UIMessageCenter::cannotDetachDevice(const CMachine &machine, UIMediumType type, const QString &strLocation, const StorageSlot &storageSlot, QWidget *pParent /*= 0*/)
+               .arg(strLocation),
+            formatErrorInfo(medium));
+}
+
+void UIMessageCenter::cannotDeleteHardDiskStorage(const CProgress &progress, const QString &strLocation, QWidget *pParent /*= 0*/) const
+{
+    message(pParent ? pParent : mainWindowShown(), MessageType_Error,
+            tr("Failed to delete the storage unit of the hard disk <b>%1</b>.")
+               .arg(strLocation),
+            !progress.isOk() ? formatErrorInfo(progress) : formatErrorInfo(progress.GetErrorInfo()));
+}
+
+void UIMessageCenter::cannotDetachDevice(const CMachine &machine, UIMediumType type, const QString &strLocation, const StorageSlot &storageSlot, QWidget *pParent /*= 0*/) const
 {
     /* Preserve error-info: */
@@ -1075,5 +1078,5 @@
 }
 
-int UIMessageCenter::cannotRemountMedium(const CMachine &machine, const UIMedium &medium, bool fMount, bool fRetry, QWidget *pParent /*= 0*/)
+int UIMessageCenter::cannotRemountMedium(const CMachine &machine, const UIMedium &medium, bool fMount, bool fRetry, QWidget *pParent /*= 0*/) const
 {
     /* Preserve error-info: */
@@ -1130,5 +1133,5 @@
 }
 
-void UIMessageCenter::cannotOpenMedium(const CVirtualBox &vbox, UIMediumType type, const QString &strLocation, QWidget *pParent /*= 0*/)
+void UIMessageCenter::cannotOpenMedium(const CVirtualBox &vbox, UIMediumType type, const QString &strLocation, QWidget *pParent /*= 0*/) const
 {
     /* Prepare the message: */
@@ -1159,5 +1162,5 @@
 }
 
-void UIMessageCenter::cannotCloseMedium(const UIMedium &medium, const COMResult &rc, QWidget *pParent /*= 0*/)
+void UIMessageCenter::cannotCloseMedium(const UIMedium &medium, const COMResult &rc, QWidget *pParent /*= 0*/) const
 {
     /* Prepare the message: */
Index: trunk/src/VBox/Frontends/VirtualBox/src/globals/UIMessageCenter.h
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/globals/UIMessageCenter.h	(revision 45314)
+++ trunk/src/VBox/Frontends/VirtualBox/src/globals/UIMessageCenter.h	(revision 45315)
@@ -256,13 +256,14 @@
 
     /* API: Virtual Medium Manager warnings: */
-    void cannotChangeMediumType(const CMedium &medium, KMediumType oldMediumType, KMediumType newMediumType, QWidget *pParent = 0);
-    bool confirmMediumRelease(const UIMedium &medium, const QString &strUsage, QWidget *pParent = 0);
-    bool confirmMediumRemoval(const UIMedium &medium, QWidget *pParent = 0);
-    int confirmDeleteHardDiskStorage(const QString &strLocation, QWidget *pParent = 0);
-    void cannotDeleteHardDiskStorage(const CMedium &medium, const CProgress &progress, QWidget *pParent = 0);
-    void cannotDetachDevice(const CMachine &machine, UIMediumType type, const QString &strLocation, const StorageSlot &storageSlot, QWidget *pParent = 0);
-    int cannotRemountMedium(const CMachine &machine, const UIMedium &medium, bool fMount, bool fRetry, QWidget *pParent = 0);
-    void cannotOpenMedium(const CVirtualBox &vbox, UIMediumType type, const QString &strLocation, QWidget *pParent = 0);
-    void cannotCloseMedium(const UIMedium &medium, const COMResult &rc, QWidget *pParent = 0);
+    void cannotChangeMediumType(const CMedium &medium, KMediumType oldMediumType, KMediumType newMediumType, QWidget *pParent = 0) const;
+    bool confirmMediumRelease(const UIMedium &medium, const QString &strUsage, QWidget *pParent = 0) const;
+    bool confirmMediumRemoval(const UIMedium &medium, QWidget *pParent = 0) const;
+    int confirmDeleteHardDiskStorage(const QString &strLocation, QWidget *pParent = 0) const;
+    void cannotDeleteHardDiskStorage(const CMedium &medium, const QString &strLocation, QWidget *pParent = 0) const;
+    void cannotDeleteHardDiskStorage(const CProgress &progress, const QString &strLocation, QWidget *pParent = 0) const;
+    void cannotDetachDevice(const CMachine &machine, UIMediumType type, const QString &strLocation, const StorageSlot &storageSlot, QWidget *pParent = 0) const;
+    int cannotRemountMedium(const CMachine &machine, const UIMedium &medium, bool fMount, bool fRetry, QWidget *pParent = 0) const;
+    void cannotOpenMedium(const CVirtualBox &vbox, UIMediumType type, const QString &strLocation, QWidget *pParent = 0) const;
+    void cannotCloseMedium(const UIMedium &medium, const COMResult &rc, QWidget *pParent = 0) const;
 
     /* API: Wizards warnings: */
Index: trunk/src/VBox/Frontends/VirtualBox/src/medium/UIMediumManager.cpp
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/medium/UIMediumManager.cpp	(revision 45314)
+++ trunk/src/VBox/Frontends/VirtualBox/src/medium/UIMediumManager.cpp	(revision 45315)
@@ -1168,13 +1168,22 @@
             if (deleteStorage)
             {
+                /* Remember virtual-disk attributes: */
+                QString strLocation = hardDisk.GetLocation();
+                /* Prepare delete storage progress: */
                 CProgress progress = hardDisk.DeleteStorage();
                 if (hardDisk.isOk())
                 {
+                    /* Show delete storage progress: */
                     msgCenter().showModalProgressDialog(progress, windowTitle(), ":/progress_media_delete_90px.png", this);
-                    if (!(progress.isOk() && progress.GetResultCode() == S_OK))
+                    if (!progress.isOk() || progress.GetResultCode() != 0)
                     {
-                        msgCenter().cannotDeleteHardDiskStorage(hardDisk, progress, this);
+                        msgCenter().cannotDeleteHardDiskStorage(progress, strLocation, this);
                         return;
                     }
+                }
+                else
+                {
+                    msgCenter().cannotDeleteHardDiskStorage(hardDisk, strLocation, this);
+                    return;
                 }
             }
Index: trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvm/UIWizardNewVMPageBasic3.cpp
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvm/UIWizardNewVMPageBasic3.cpp	(revision 45314)
+++ trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvm/UIWizardNewVMPageBasic3.cpp	(revision 45315)
@@ -98,30 +98,27 @@
 void UIWizardNewVMPage3::ensureNewVirtualDiskDeleted()
 {
-    /* Make sure virtual-disk exists: */
+    /* Make sure virtual-disk valid: */
     if (m_virtualDisk.isNull())
         return;
 
-    /* Remember virtual-disk ID: */
+    /* Remember virtual-disk attributes: */
     QString strId = m_virtualDisk.GetId();
-
-    /* 1st step: start delete-storage progress: */
+    QString strLocation = m_virtualDisk.GetLocation();
+    /* Prepare delete storage progress: */
     CProgress progress = m_virtualDisk.DeleteStorage();
-    /* Get initial state: */
-    bool fSuccess = m_virtualDisk.isOk();
-
-    /* 2nd step: show delete-storage progress: */
-    if (fSuccess)
-    {
+    if (m_virtualDisk.isOk())
+    {
+        /* Show delete storage progress: */
         msgCenter().showModalProgressDialog(progress, thisImp()->windowTitle(), ":/progress_media_delete_90px.png", thisImp());
-        fSuccess = progress.isOk() && progress.GetResultCode() == S_OK;
-    }
-
-    /* 3rd step: notify GUI about virtual-disk was deleted or show error if any: */
-    if (fSuccess)
-        vboxGlobal().removeMedium(UIMediumType_HardDisk, strId);
+        if (!progress.isOk() || progress.GetResultCode() != 0)
+            msgCenter().cannotDeleteHardDiskStorage(progress, strLocation, thisImp());
+    }
     else
-        msgCenter().cannotDeleteHardDiskStorage(m_virtualDisk, progress, thisImp());
-
-    /* Detach virtual-disk finally: */
+        msgCenter().cannotDeleteHardDiskStorage(m_virtualDisk, strLocation, thisImp());
+
+    /* Remove virtual-disk from GUI anyway: */
+    vboxGlobal().removeMedium(UIMediumType_HardDisk, strId);
+
+    /* Detach virtual-disk anyway: */
     m_virtualDisk.detach();
 }
