Index: /trunk/src/VBox/Frontends/VirtualBox/src/globals/VBoxGlobal.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/globals/VBoxGlobal.cpp	(revision 48263)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/globals/VBoxGlobal.cpp	(revision 48264)
@@ -1747,5 +1747,5 @@
     it = m_mediums.insert (it, uimedium);
 
-    emit sigMediumCreated(*it);
+    emit sigMediumCreated((*it).id());
 }
 
@@ -1762,5 +1762,5 @@
         *it = uimedium;
 
-    emit sigMediumUpdated(*it);
+    emit sigMediumUpdated((*it).id());
 }
 
@@ -1796,5 +1796,5 @@
     {
         pParent->refresh();
-        emit sigMediumUpdated(*pParent);
+        emit sigMediumUpdated(pParent->id());
     }
 }
@@ -4018,5 +4018,5 @@
 
             /* Notify listeners about newly enumerated medium: */
-            emit sigMediumEnumerated(*pMediumEnumeratedEvent->m_iterator);
+            emit sigMediumEnumerated((*pMediumEnumeratedEvent->m_iterator).id());
 
             /* Accept event: */
Index: /trunk/src/VBox/Frontends/VirtualBox/src/globals/VBoxGlobal.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/globals/VBoxGlobal.h	(revision 48263)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/globals/VBoxGlobal.h	(revision 48264)
@@ -373,11 +373,11 @@
 
     /* Notifiers: Medium-processing stuff: */
-    void sigMediumCreated(const UIMedium &medium);
-    void sigMediumUpdated(const UIMedium &medium);
+    void sigMediumCreated(const QString &strMediumID);
+    void sigMediumUpdated(const QString &strMediumID);
     void sigMediumDeleted(const QString &strMediumID);
 
     /* Notifiers: Medium-enumeration stuff: */
     void sigMediumEnumerationStarted();
-    void sigMediumEnumerated(const UIMedium &medium);
+    void sigMediumEnumerated(const QString &strMediumID);
     void sigMediumEnumerationFinished();
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/medium/UIMediumManager.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/medium/UIMediumManager.cpp	(revision 48263)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/medium/UIMediumManager.cpp	(revision 48264)
@@ -272,6 +272,9 @@
 }
 
-void UIMediumManager::sltHandleMediumCreated(const UIMedium &medium)
-{
+void UIMediumManager::sltHandleMediumCreated(const QString &strMediumID)
+{
+    /* Search for corresponding medium: */
+    UIMedium medium = vboxGlobal().medium(strMediumID);
+
     /* Ignore non-interesting mediums: */
     if ((medium.isNull()) || (medium.isHostDrive()))
@@ -337,6 +340,9 @@
 }
 
-void UIMediumManager::sltHandleMediumUpdated(const UIMedium &medium)
-{
+void UIMediumManager::sltHandleMediumUpdated(const QString &strMediumID)
+{
+    /* Search for corresponding medium: */
+    UIMedium medium = vboxGlobal().medium(strMediumID);
+
     /* Ignore non-interesting mediums: */
     if ((medium.isNull()) || (medium.isHostDrive()))
@@ -420,5 +426,5 @@
     VBoxMediaList::const_iterator it;
     for (it = mediums.begin(); it != mediums.end(); ++it)
-        sltHandleMediumCreated(*it);
+        sltHandleMediumCreated((*it).id());
 
     /* Select the first item to be the current one
@@ -438,8 +444,8 @@
 }
 
-void UIMediumManager::sltHandleMediumEnumerated(const UIMedium &medium)
+void UIMediumManager::sltHandleMediumEnumerated(const QString &strMediumID)
 {
     /* Handle medium-update: */
-    sltHandleMediumUpdated(medium);
+    sltHandleMediumUpdated(strMediumID);
 
     /* Advance progress-bar: */
@@ -858,8 +864,8 @@
 
     /* Configure medium-processing connections: */
-    connect(&vboxGlobal(), SIGNAL(sigMediumCreated(const UIMedium&)),
-            this, SLOT(sltHandleMediumCreated(const UIMedium&)));
-    connect(&vboxGlobal(), SIGNAL(sigMediumUpdated(const UIMedium&)),
-            this, SLOT(sltHandleMediumUpdated(const UIMedium&)));
+    connect(&vboxGlobal(), SIGNAL(sigMediumCreated(const QString&)),
+            this, SLOT(sltHandleMediumCreated(const QString&)));
+    connect(&vboxGlobal(), SIGNAL(sigMediumUpdated(const QString&)),
+            this, SLOT(sltHandleMediumUpdated(const QString&)));
     connect(&vboxGlobal(), SIGNAL(sigMediumDeleted(const QString&)),
             this, SLOT(sltHandleMediumDeleted(const QString&)));
@@ -868,6 +874,6 @@
     connect(&vboxGlobal(), SIGNAL(sigMediumEnumerationStarted()),
             this, SLOT(sltHandleMediumEnumerationStart()));
-    connect(&vboxGlobal(), SIGNAL(sigMediumEnumerated(const UIMedium&)),
-            this, SLOT(sltHandleMediumEnumerated(const UIMedium&)));
+    connect(&vboxGlobal(), SIGNAL(sigMediumEnumerated(const QString&)),
+            this, SLOT(sltHandleMediumEnumerated(const QString&)));
     connect(&vboxGlobal(), SIGNAL(sigMediumEnumerationFinished()),
             this, SLOT(sltHandleMediumEnumerationFinish()));
@@ -1159,5 +1165,5 @@
         for (it = mediums.begin(); it != mediums.end(); ++it)
         {
-            sltHandleMediumCreated(*it);
+            sltHandleMediumCreated((*it).id());
             /* But advance progress-bar only for created mediums: */
             if ((*it).state() != KMediumState_NotCreated)
Index: /trunk/src/VBox/Frontends/VirtualBox/src/medium/UIMediumManager.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/medium/UIMediumManager.h	(revision 48263)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/medium/UIMediumManager.h	(revision 48264)
@@ -64,11 +64,11 @@
 
     /* Handlers: Medium-processing stuff: */
-    void sltHandleMediumCreated(const UIMedium &medium);
-    void sltHandleMediumUpdated(const UIMedium &medium);
+    void sltHandleMediumCreated(const QString &strMediumID);
+    void sltHandleMediumUpdated(const QString &strMediumID);
     void sltHandleMediumDeleted(const QString &strMediumID);
 
     /* Handlers: Medium-enumeration stuff: */
     void sltHandleMediumEnumerationStart();
-    void sltHandleMediumEnumerated(const UIMedium &medium);
+    void sltHandleMediumEnumerated(const QString &strMediumID);
     void sltHandleMediumEnumerationFinish();
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsStorage.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsStorage.cpp	(revision 48263)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsStorage.cpp	(revision 48264)
@@ -1831,8 +1831,8 @@
 
     /* Setup connections: */
-    connect(&vboxGlobal(), SIGNAL(sigMediumEnumerated(const UIMedium&)),
-            this, SLOT(sltHandleMediumUpdated(const UIMedium&)));
-    connect(&vboxGlobal(), SIGNAL(sigMediumUpdated(const UIMedium&)),
-            this, SLOT(sltHandleMediumUpdated(const UIMedium&)));
+    connect(&vboxGlobal(), SIGNAL(sigMediumEnumerated(const QString&)),
+            this, SLOT(sltHandleMediumUpdated(const QString&)));
+    connect(&vboxGlobal(), SIGNAL(sigMediumUpdated(const QString&)),
+            this, SLOT(sltHandleMediumUpdated(const QString&)));
     connect(&vboxGlobal(), SIGNAL(sigMediumDeleted(const QString&)),
             this, SLOT(sltHandleMediumDeleted(const QString&)));
@@ -2271,17 +2271,20 @@
 }
 
-void UIMachineSettingsStorage::sltHandleMediumUpdated(const UIMedium &medium)
-{
+void UIMachineSettingsStorage::sltHandleMediumUpdated(const QString &strMediumID)
+{
+    /* Search for corresponding medium: */
+    UIMedium medium = vboxGlobal().medium(strMediumID);
+
     QModelIndex rootIndex = mStorageModel->root();
-    for (int i = 0; i < mStorageModel->rowCount (rootIndex); ++ i)
-    {
-        QModelIndex ctrIndex = rootIndex.child (i, 0);
-        for (int j = 0; j < mStorageModel->rowCount (ctrIndex); ++ j)
-        {
-            QModelIndex attIndex = ctrIndex.child (j, 0);
-            QString attMediumId = mStorageModel->data (attIndex, StorageModel::R_AttMediumId).toString();
+    for (int i = 0; i < mStorageModel->rowCount(rootIndex); ++i)
+    {
+        QModelIndex ctrIndex = rootIndex.child(i, 0);
+        for (int j = 0; j < mStorageModel->rowCount(ctrIndex); ++j)
+        {
+            QModelIndex attIndex = ctrIndex.child(j, 0);
+            QString attMediumId = mStorageModel->data(attIndex, StorageModel::R_AttMediumId).toString();
             if (attMediumId == medium.id())
             {
-                mStorageModel->setData (attIndex, attMediumId, StorageModel::R_AttMediumId);
+                mStorageModel->setData(attIndex, attMediumId, StorageModel::R_AttMediumId);
 
                 /* Revalidate: */
@@ -2295,14 +2298,14 @@
 {
     QModelIndex rootIndex = mStorageModel->root();
-    for (int i = 0; i < mStorageModel->rowCount (rootIndex); ++ i)
-    {
-        QModelIndex ctrIndex = rootIndex.child (i, 0);
-        for (int j = 0; j < mStorageModel->rowCount (ctrIndex); ++ j)
-        {
-            QModelIndex attIndex = ctrIndex.child (j, 0);
-            QString attMediumId = mStorageModel->data (attIndex, StorageModel::R_AttMediumId).toString();
+    for (int i = 0; i < mStorageModel->rowCount(rootIndex); ++i)
+    {
+        QModelIndex ctrIndex = rootIndex.child(i, 0);
+        for (int j = 0; j < mStorageModel->rowCount(ctrIndex); ++j)
+        {
+            QModelIndex attIndex = ctrIndex.child(j, 0);
+            QString attMediumId = mStorageModel->data(attIndex, StorageModel::R_AttMediumId).toString();
             if (attMediumId == strMediumID)
             {
-                mStorageModel->setData (attIndex, UIMedium().id(), StorageModel::R_AttMediumId);
+                mStorageModel->setData(attIndex, UIMedium().id(), StorageModel::R_AttMediumId);
 
                 /* Revalidate: */
Index: /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsStorage.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsStorage.h	(revision 48263)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsStorage.h	(revision 48264)
@@ -683,5 +683,5 @@
 
     /* Handlers: Medium-processing stuff: */
-    void sltHandleMediumUpdated(const UIMedium &medium);
+    void sltHandleMediumUpdated(const QString &strMediumID);
     void sltHandleMediumDeleted(const QString &strMediumID);
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/widgets/VBoxMediaComboBox.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/widgets/VBoxMediaComboBox.cpp	(revision 48263)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/widgets/VBoxMediaComboBox.cpp	(revision 48264)
@@ -39,8 +39,8 @@
 
     /* Setup medium-processing handlers: */
-    connect(&vboxGlobal(), SIGNAL(sigMediumCreated(const UIMedium&)),
-            this, SLOT(sltHandleMediumCreated(const UIMedium&)));
-    connect(&vboxGlobal(), SIGNAL(sigMediumUpdated(const UIMedium&)),
-            this, SLOT(sltHandleMediumUpdated(const UIMedium&)));
+    connect(&vboxGlobal(), SIGNAL(sigMediumCreated(const QString&)),
+            this, SLOT(sltHandleMediumCreated(const QString&)));
+    connect(&vboxGlobal(), SIGNAL(sigMediumUpdated(const QString&)),
+            this, SLOT(sltHandleMediumUpdated(const QString&)));
     connect(&vboxGlobal(), SIGNAL(sigMediumDeleted(const QString&)),
             this, SLOT(sltHandleMediumDeleted(const QString&)));
@@ -49,6 +49,6 @@
     connect(&vboxGlobal(), SIGNAL(sigMediumEnumerationStarted()),
             this, SLOT(sltHandleMediumEnumerationStart()));
-    connect(&vboxGlobal(), SIGNAL(sigMediumEnumerated(const UIMedium&)),
-            this, SLOT(sltHandleMediumUpdated(const UIMedium&)));
+    connect(&vboxGlobal(), SIGNAL(sigMediumEnumerated(const QString&)),
+            this, SLOT(sltHandleMediumUpdated(const QString&)));
 
     /* Setup other connections */
@@ -69,5 +69,5 @@
     VBoxMediaList list (vboxGlobal().currentMediaList());
     foreach (UIMedium medium, list)
-        sltHandleMediumCreated(medium);
+        sltHandleMediumCreated(medium.id());
 
     /* If at least one real medium present, process null medium */
@@ -168,11 +168,9 @@
 
 
-void VBoxMediaComboBox::sltHandleMediumEnumerationStart()
-{
-    refresh();
-}
-
-void VBoxMediaComboBox::sltHandleMediumCreated(const UIMedium &medium)
-{
+void VBoxMediaComboBox::sltHandleMediumCreated(const QString &strMediumID)
+{
+    /* Search for corresponding medium: */
+    UIMedium medium = vboxGlobal().medium(strMediumID);
+
     if (medium.isNull() || medium.type() == mType)
     {
@@ -199,6 +197,9 @@
 }
 
-void VBoxMediaComboBox::sltHandleMediumUpdated(const UIMedium &medium)
-{
+void VBoxMediaComboBox::sltHandleMediumUpdated(const QString &strMediumID)
+{
+    /* Search for corresponding medium: */
+    UIMedium medium = vboxGlobal().medium(strMediumID);
+
     if (medium.isNull() || medium.type() == mType)
     {
@@ -224,11 +225,19 @@
     mMedia.erase(mMedia.begin() + index);
 
-    /* If no real medium left, add the null medium: */
+    /* If no real medium left, add the NULL medium: */
     if (count() == 0)
-        sltHandleMediumCreated(UIMedium());
+    {
+        UIMedium nullMedium;
+        sltHandleMediumCreated(nullMedium.id());
+    }
 
     /* Emit the signal to ensure the parent dialog handles the change of
      * the selected item: */
     emit activated(currentIndex());
+}
+
+void VBoxMediaComboBox::sltHandleMediumEnumerationStart()
+{
+    refresh();
 }
 
@@ -262,24 +271,4 @@
 void VBoxMediaComboBox::appendItem (const UIMedium &aMedium)
 {
-    if (!mShowDiffs && aMedium.parent() != NULL)
-    {
-        /* We are adding the direct machine diff in !mShowDiffs mode. Since its
-         * base hard disk has been already appended (enumerated before), we want
-         * to replace the base with the diff to avoid showing both (both would
-         * be labeled using the base filename and therefore look like
-         * duplicates). Note though that these visual duplicates are still
-         * possible in !mShowDiffs mode if the same base hard disk is attached*
-         * to the VM through different diffs (this is why we don't assert
-         * below on findMediaIndex() == true). However, this situation is
-         * unavoidable so we accept it assuming that the user will switch to
-           mShowDiffs mode if he needs clarity. */
-        int index;
-        if (findMediaIndex (aMedium.root().id(), index))
-        {
-            replaceItem (index, aMedium);
-            return;
-        }
-    }
-
     mMedia.append (Medium (aMedium.id(), aMedium.location(),
                            aMedium.toolTipCheckRO (!mShowDiffs, mShowNullItem && mType != UIMediumType_HardDisk)));
Index: /trunk/src/VBox/Frontends/VirtualBox/src/widgets/VBoxMediaComboBox.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/widgets/VBoxMediaComboBox.h	(revision 48263)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/widgets/VBoxMediaComboBox.h	(revision 48264)
@@ -53,6 +53,6 @@
 
     /* Handlers: Medium-processing stuff: */
-    void sltHandleMediumCreated(const UIMedium &medium);
-    void sltHandleMediumUpdated(const UIMedium &medium);
+    void sltHandleMediumCreated(const QString &strMediumID);
+    void sltHandleMediumUpdated(const QString &strMediumID);
     void sltHandleMediumDeleted(const QString &strMediumID);
 
