Index: /trunk/src/VBox/Frontends/VirtualBox/src/medium/UIMediumManager.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/medium/UIMediumManager.cpp	(revision 45289)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/medium/UIMediumManager.cpp	(revision 45290)
@@ -583,4 +583,10 @@
 }
 
+/* static */
+UIMediumManager* UIMediumManager::modelessInstance()
+{
+    return mModelessDialog;
+}
+
 QString UIMediumManager::selectedId() const
 {
Index: /trunk/src/VBox/Frontends/VirtualBox/src/medium/UIMediumManager.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/medium/UIMediumManager.h	(revision 45289)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/medium/UIMediumManager.h	(revision 45290)
@@ -57,4 +57,5 @@
 
     static void showModeless (QWidget *aParent = NULL, bool aRefresh = true);
+    static UIMediumManager* modelessInstance();
 
     QString selectedId() const;
Index: /trunk/src/VBox/Frontends/VirtualBox/src/selector/UISelectorWindow.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/selector/UISelectorWindow.cpp	(revision 45289)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/selector/UISelectorWindow.cpp	(revision 45290)
@@ -28,4 +28,5 @@
 #include <QResizeEvent>
 #include <QStackedWidget>
+#include <QTimer>
 
 /* Local includes: */
@@ -76,4 +77,6 @@
                                    Qt::WindowFlags flags /* = Qt::Window */)
     : QIWithRetranslateUI2<QMainWindow>(pParent, flags)
+    , m_fPolished(false)
+    , m_fWarningAboutInaccessibleMediumShown(false)
     , m_pSplitter(0)
 #ifndef Q_WS_MAC
@@ -85,5 +88,4 @@
     , m_pDetails(0)
     , m_pVMDesktop(0)
-    , m_fDoneInaccessibleWarningOnce(false)
 {
     /* Remember self: */
@@ -169,34 +171,28 @@
 }
 
-void UISelectorWindow::sltMediumEnumFinished(const VBoxMediaList &list)
-{
-    /* We warn about inaccessible media only once
+void UISelectorWindow::sltMediumEnumFinished()
+{
+    /* We try to warn about inaccessible mediums only once
      * (after media emumeration started from main() at startup),
      * to avoid annoying the user: */
-    if (m_fDoneInaccessibleWarningOnce)
-        return;
-    m_fDoneInaccessibleWarningOnce = true;
-
-    /* Ignore the signal if a modal widget is currently active
-     * (we won't be able to properly show the modeless VDI manager window in this case): */
-    // TODO: Not sure that is required at all...
-    if (QApplication::activeModalWidget())
-        return;
-
-    /* Ignore the signal if a UIMediumManager window is active: */
-    // TODO: Thats a very dirty way, rework required!
-    if (qApp->activeWindow() &&
-        !strcmp(qApp->activeWindow()->metaObject()->className(), "UIMediumManager"))
-        return;
-
-    /* Look for at least one inaccessible media: */
+    if (m_fWarningAboutInaccessibleMediumShown)
+        return;
+    m_fWarningAboutInaccessibleMediumShown = true;
+
+    /* Make sure MM window is not opened: */
+    if (UIMediumManager::modelessInstance())
+        return;
+
+    /* Look for at least one inaccessible medium: */
+    const VBoxMediaList &list = vboxGlobal().currentMediaList();
     VBoxMediaList::const_iterator it;
     for (it = list.begin(); it != list.end(); ++it)
         if ((*it).state() == KMediumState_Inaccessible)
             break;
-    /* Ask the user about: */
+
+    /* Warn the user about inaccessible medium: */
     if (it != list.end() && msgCenter().remindAboutInaccessibleMedia())
     {
-        /* Show the VMM dialog without refresh: */
+        /* Open the MM window (without refresh): */
         UIMediumManager::showModeless(this, false /* refresh? */);
     }
@@ -312,4 +308,8 @@
     m_pPreferencesDialogAction->setData(true);
 
+    /* Don't show the inaccessible warning
+     * if the user tries to open global settings: */
+    m_fWarningAboutInaccessibleMediumShown = true;
+
     /* Create and execute global settings dialog: */
     UISettingsDialogGlobal dialog(this);
@@ -402,6 +402,7 @@
     }
 
-    /* Don't show the inaccessible warning if the user tries to open VM settings: */
-    m_fDoneInaccessibleWarningOnce = true;
+    /* Don't show the inaccessible warning
+     * if the user tries to open VM settings: */
+    m_fWarningAboutInaccessibleMediumShown = true;
 
     /* Create and execute corresponding VM settings dialog: */
@@ -1001,4 +1002,26 @@
 }
 
+void UISelectorWindow::showEvent(QShowEvent *pEvent)
+{
+    /* Call to base-class: */
+    QMainWindow::showEvent(pEvent);
+
+    /* Is polishing required? */
+    if (!m_fPolished)
+    {
+        /* Pass the show-event to polish-event: */
+        polishEvent(pEvent);
+        /* Mark as polished: */
+        m_fPolished = true;
+    }
+}
+
+void UISelectorWindow::polishEvent(QShowEvent*)
+{
+    /* Make sure user warned about inaccessible medium(s)
+     * even if enumeration had finished before selector window shown: */
+    QTimer::singleShot(0, this, SLOT(sltMediumEnumFinished()));
+}
+
 void UISelectorWindow::closeEvent(QCloseEvent *pEvent)
 {
@@ -1379,5 +1402,5 @@
 {
     /* Medium enumeration connections: */
-    connect(&vboxGlobal(), SIGNAL(mediumEnumFinished(const VBoxMediaList &)), this, SLOT(sltMediumEnumFinished(const VBoxMediaList &)));
+    connect(&vboxGlobal(), SIGNAL(mediumEnumFinished(const VBoxMediaList &)), this, SLOT(sltMediumEnumFinished()));
 
     /* Menu-bar connections: */
Index: /trunk/src/VBox/Frontends/VirtualBox/src/selector/UISelectorWindow.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/selector/UISelectorWindow.h	(revision 45289)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/selector/UISelectorWindow.h	(revision 45290)
@@ -70,5 +70,5 @@
 
     /* Handler: Medium enumeration stuff: */
-    void sltMediumEnumFinished(const VBoxMediaList &mediumList);
+    void sltMediumEnumFinished();
 
     /* Handler: Menubar/status stuff: */
@@ -115,4 +115,6 @@
     /* Event handlers: */
     bool event(QEvent *pEvent);
+    void showEvent(QShowEvent *pEvent);
+    void polishEvent(QShowEvent *pEvent);
     void closeEvent(QCloseEvent *pEvent);
 #ifdef Q_WS_MAC
@@ -157,4 +159,8 @@
     static bool isAtLeastOneItemStarted(const QList<UIVMItem*> &items);
     static bool isAtLeastOneItemRunning(const QList<UIVMItem*> &items);
+
+    /* Variables: */
+    bool m_fPolished : 1;
+    bool m_fWarningAboutInaccessibleMediumShown : 1;
 
     /* Central splitter window: */
@@ -240,5 +246,4 @@
     /* Other variables: */
     QRect m_normalGeo;
-    bool m_fDoneInaccessibleWarningOnce : 1;
 };
 
