Index: trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineLogic.cpp
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineLogic.cpp	(revision 49015)
+++ trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineLogic.cpp	(revision 49025)
@@ -537,5 +537,5 @@
 }
 
-void UIMachineLogic::sltHostScreenCountChanged(int /*cHostScreenCount*/)
+void UIMachineLogic::sltHostScreenCountChanged()
 {
     /* Deliver event to all machine-windows: */
@@ -721,6 +721,6 @@
 
     /* Host-screen-change updaters: */
-    connect(uisession(), SIGNAL(sigHostScreenCountChanged(int)),
-            this, SLOT(sltHostScreenCountChanged(int)));
+    connect(uisession(), SIGNAL(sigHostScreenCountChanged()),
+            this, SLOT(sltHostScreenCountChanged()));
     connect(uisession(), SIGNAL(sigHostScreenGeometryChanged()),
             this, SLOT(sltHostScreenGeometryChanged()));
Index: trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineLogic.h
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineLogic.h	(revision 49015)
+++ trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineLogic.h	(revision 49025)
@@ -112,5 +112,5 @@
 
     /* Qt callback handler: */
-    virtual void sltHostScreenCountChanged(int cHostScreenCount);
+    virtual void sltHostScreenCountChanged();
     virtual void sltHostScreenGeometryChanged();
 
Index: trunk/src/VBox/Frontends/VirtualBox/src/runtime/UISession.cpp
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/runtime/UISession.cpp	(revision 49015)
+++ trunk/src/VBox/Frontends/VirtualBox/src/runtime/UISession.cpp	(revision 49025)
@@ -85,12 +85,32 @@
  * Notifies about @a display configuration change.
  * Corresponding change described by CoreGraphics @a flags.
- * UISession::sltHandleHostScreenGeometryChange() is called through @a pHandlerObject to handle this callback.
+ * Calls for corresponding UISession slots through @a pHandlerObject to handle this callback.
  *
  * @note Last argument (@a pHandlerObject) must always be valid pointer to UISession object.
+ * @note Calls for UISession::sltHandleHostScreenCountChange() if display count was changed.
+ * @note Calls for UISession::sltHandleHostScreenGeometryChange() if display mode was changed.
  */
 void cgDisplayReconfigurationCallback(CGDirectDisplayID display, CGDisplayChangeSummaryFlags flags, void *pHandlerObject)
 {
+    /* Handle 'display-add' case: */
+    if (flags & kCGDisplayAddFlag)
+    {
+        LogRelFlow(("UISession::cgDisplayReconfigurationCallback: Display added.\n"));
+
+        /* Ask receiver to handle our callback, can't believe I'm using r_c here... */
+        UISession *pReceiver = reinterpret_cast<UISession*>(pHandlerObject);
+        QTimer::singleShot(0, pReceiver, SLOT(sltHandleHostScreenCountChange()));
+    }
+    /* Handle 'display-remove' case: */
+    else if (flags & kCGDisplayRemoveFlag)
+    {
+        LogRelFlow(("UISession::cgDisplayReconfigurationCallback: Display removed.\n"));
+
+        /* Ask receiver to handle our callback, can't believe I'm using r_c here... */
+        UISession *pReceiver = reinterpret_cast<UISession*>(pHandlerObject);
+        QTimer::singleShot(0, pReceiver, SLOT(sltHandleHostScreenCountChange()));
+    }
     /* Handle 'mode-set' case: */
-    if (flags & kCGDisplaySetModeFlag)
+    else if (flags & kCGDisplaySetModeFlag)
     {
         LogRelFlow(("UISession::cgDisplayReconfigurationCallback: Display mode changed.\n"));
@@ -100,4 +120,5 @@
         QTimer::singleShot(0, pReceiver, SLOT(sltHandleHostScreenGeometryChange()));
     }
+    Q_UNUSED(display);
 }
 #endif /* Q_WS_MAC */
@@ -817,4 +838,12 @@
 }
 
+void UISession::sltHandleHostScreenCountChange()
+{
+    LogRelFlow(("UISession: Host-screen count changed.\n"));
+
+    /* Notify current machine-logic: */
+    emit sigHostScreenCountChanged();
+}
+
 void UISession::sltHandleHostScreenGeometryChange()
 {
@@ -913,8 +942,7 @@
     connect(this, SIGNAL(sigCloseRuntimeUI()), this, SLOT(sltCloseRuntimeUI()));
 
+    /* Install Qt display reconfiguration callbacks: */
     connect(QApplication::desktop(), SIGNAL(screenCountChanged(int)),
-            this, SIGNAL(sigHostScreenCountChanged(int)));
-
-    /* Install Qt reconfiguration callbacks: */
+            this, SLOT(sltHandleHostScreenCountChange()));
     connect(QApplication::desktop(), SIGNAL(resized(int)),
             this, SLOT(sltHandleHostScreenGeometryChange()));
Index: trunk/src/VBox/Frontends/VirtualBox/src/runtime/UISession.h
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/runtime/UISession.h	(revision 49015)
+++ trunk/src/VBox/Frontends/VirtualBox/src/runtime/UISession.h	(revision 49025)
@@ -209,5 +209,5 @@
 
     /* Notifiers: Qt callback stuff: */
-    void sigHostScreenCountChanged(int cHostScreenCount);
+    void sigHostScreenCountChanged();
     void sigHostScreenGeometryChanged();
 
@@ -234,5 +234,6 @@
     void sltGuestMonitorChange(KGuestMonitorChangedEventType changeType, ulong uScreenId, QRect screenGeo);
 
-    /* Handler: Host callback stuff: */
+    /* Handlers: Host callback stuff: */
+    void sltHandleHostScreenCountChange();
     void sltHandleHostScreenGeometryChange();
 
Index: trunk/src/VBox/Frontends/VirtualBox/src/runtime/fullscreen/UIMachineLogicFullscreen.cpp
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/runtime/fullscreen/UIMachineLogicFullscreen.cpp	(revision 49015)
+++ trunk/src/VBox/Frontends/VirtualBox/src/runtime/fullscreen/UIMachineLogicFullscreen.cpp	(revision 49025)
@@ -136,5 +136,5 @@
 }
 
-void UIMachineLogicFullscreen::sltHostScreenCountChanged(int cScreenCount)
+void UIMachineLogicFullscreen::sltHostScreenCountChanged()
 {
     LogRelFlow(("UIMachineLogicFullscreen: Host-screen count changed.\n"));
@@ -144,5 +144,5 @@
 
     /* Call to base-class: */
-    UIMachineLogic::sltHostScreenCountChanged(cScreenCount);
+    UIMachineLogic::sltHostScreenCountChanged();
 }
 
Index: trunk/src/VBox/Frontends/VirtualBox/src/runtime/fullscreen/UIMachineLogicFullscreen.h
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/runtime/fullscreen/UIMachineLogicFullscreen.h	(revision 49015)
+++ trunk/src/VBox/Frontends/VirtualBox/src/runtime/fullscreen/UIMachineLogicFullscreen.h	(revision 49025)
@@ -54,5 +54,5 @@
 #endif /* Q_WS_MAC */
     void sltGuestMonitorChange(KGuestMonitorChangedEventType changeType, ulong uScreenId, QRect screenGeo);
-    void sltHostScreenCountChanged(int cScreenCount);
+    void sltHostScreenCountChanged();
 
 private:
Index: trunk/src/VBox/Frontends/VirtualBox/src/runtime/seamless/UIMachineLogicSeamless.cpp
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/runtime/seamless/UIMachineLogicSeamless.cpp	(revision 49015)
+++ trunk/src/VBox/Frontends/VirtualBox/src/runtime/seamless/UIMachineLogicSeamless.cpp	(revision 49025)
@@ -136,5 +136,5 @@
 }
 
-void UIMachineLogicSeamless::sltHostScreenCountChanged(int cScreenCount)
+void UIMachineLogicSeamless::sltHostScreenCountChanged()
 {
     LogRelFlow(("UIMachineLogicSeamless: Host-screen count changed.\n"));
@@ -144,5 +144,5 @@
 
     /* Call to base-class: */
-    UIMachineLogic::sltHostScreenCountChanged(cScreenCount);
+    UIMachineLogic::sltHostScreenCountChanged();
 }
 
Index: trunk/src/VBox/Frontends/VirtualBox/src/runtime/seamless/UIMachineLogicSeamless.h
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/runtime/seamless/UIMachineLogicSeamless.h	(revision 49015)
+++ trunk/src/VBox/Frontends/VirtualBox/src/runtime/seamless/UIMachineLogicSeamless.h	(revision 49025)
@@ -53,5 +53,5 @@
 
     void sltGuestMonitorChange(KGuestMonitorChangedEventType changeType, ulong uScreenId, QRect screenGeo);
-    void sltHostScreenCountChanged(int cScreenCount);
+    void sltHostScreenCountChanged();
 
 private:
