Index: /trunk/src/VBox/Frontends/VirtualBox/src/runtime/fullscreen/UIMachineLogicFullscreen.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/runtime/fullscreen/UIMachineLogicFullscreen.cpp	(revision 50572)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/runtime/fullscreen/UIMachineLogicFullscreen.cpp	(revision 50573)
@@ -150,5 +150,6 @@
                 pMachineWindow->showInNecessaryMode();
             foreach (UIMachineWindow *pMachineWindow, machineWindows())
-                if (   (darwinScreensHaveSeparateSpaces() || pMachineWindow->screenId() == 0)
+                if (   uisession()->isScreenVisible(pMachineWindow->screenId())
+                    && (darwinScreensHaveSeparateSpaces() || pMachineWindow->screenId() == 0)
                     && !darwinIsInFullscreenMode(pMachineWindow))
                     darwinToggleFullscreenMode(pMachineWindow);
@@ -262,13 +263,6 @@
         setPresentationModeEnabled(true);
     }
-    /* For ML and next: */
-    else
-    {
-        /* Invalidate and exit fullscreen mode: */
-        m_fIsFullscreenInvalidated = true;
-        foreach (UIMachineWindow *pMachineWindow, machineWindows())
-            if (darwinIsInFullscreenMode(pMachineWindow))
-                darwinToggleFullscreenMode(pMachineWindow);
-    }
+    /* Invalidate fullscreen mode for ML and next: */
+    else invalidateFullscreenMode();
 #else /* !Q_WS_MAC */
     /* Update machine-window(s) location/size: */
@@ -287,6 +281,14 @@
         m_pScreenLayout->rebuild();
 
+#ifdef Q_WS_MAC
+    /* Call to base-class for Lion and previous: */
+    if (vboxGlobal().osRelease() <= MacOSXRelease_Lion)
+        UIMachineLogic::sltGuestMonitorChange(changeType, uScreenId, screenGeo);
+    /* Invalidate fullscreen mode for ML and next: */
+    else invalidateFullscreenMode();
+#else /* !Q_WS_MAC */
     /* Call to base-class: */
     UIMachineLogic::sltGuestMonitorChange(changeType, uScreenId, screenGeo);
+#endif /* !Q_WS_MAC */
 }
 
@@ -298,6 +300,14 @@
     m_pScreenLayout->rebuild();
 
+#ifdef Q_WS_MAC
+    /* Call to base-class for Lion and previous: */
+    if (vboxGlobal().osRelease() <= MacOSXRelease_Lion)
+        UIMachineLogic::sltHostScreenCountChanged();
+    /* Invalidate fullscreen mode for ML and next: */
+    else invalidateFullscreenMode();
+#else /* !Q_WS_MAC */
     /* Call to base-class: */
     UIMachineLogic::sltHostScreenCountChanged();
+#endif /* !Q_WS_MAC */
 }
 
@@ -480,4 +490,19 @@
         SetSystemUIMode(kUIModeNormal, 0);
 }
-#endif /* Q_WS_MAC */
-
+
+void UIMachineLogicFullscreen::invalidateFullscreenMode()
+{
+    /* Make sure 'fullscreen' mode is not invalidated yet: */
+    if (m_fIsFullscreenInvalidated)
+        return;
+
+    /* Mark 'fullscreen' mode as invalidated: */
+    m_fIsFullscreenInvalidated = true;
+
+    /* Exit fullscreen mode: */
+    foreach (UIMachineWindow *pMachineWindow, machineWindows())
+        if (darwinIsInFullscreenMode(pMachineWindow))
+            darwinToggleFullscreenMode(pMachineWindow);
+}
+#endif /* Q_WS_MAC */
+
Index: /trunk/src/VBox/Frontends/VirtualBox/src/runtime/fullscreen/UIMachineLogicFullscreen.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/runtime/fullscreen/UIMachineLogicFullscreen.h	(revision 50572)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/runtime/fullscreen/UIMachineLogicFullscreen.h	(revision 50573)
@@ -95,4 +95,7 @@
 #ifdef Q_WS_MAC
     void setPresentationModeEnabled(bool fEnabled);
+
+    /** Mac OS X: Invalidates 'fullscreen' mode. */
+    void invalidateFullscreenMode();
 #endif /* Q_WS_MAC */
 
