Index: /trunk/src/VBox/Frontends/VirtualBox/src/runtime/fullscreen/UIMachineLogicFullscreen.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/runtime/fullscreen/UIMachineLogicFullscreen.cpp	(revision 50534)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/runtime/fullscreen/UIMachineLogicFullscreen.cpp	(revision 50535)
@@ -227,10 +227,18 @@
     setPresentationModeEnabled(true);
 }
+#endif /* Q_WS_MAC */
 
 void UIMachineLogicFullscreen::sltScreenLayoutChanged()
 {
-    setPresentationModeEnabled(true);
-}
-#endif /* Q_WS_MAC */
+    /* Update machine-window(s) location/size: */
+    foreach (UIMachineWindow *pMachineWindow, machineWindows())
+        pMachineWindow->showInNecessaryMode();
+
+#ifdef Q_WS_MAC
+    /* Update 'presentation mode' for Lion and previous: */
+    if (vboxGlobal().osRelease() <= MacOSXRelease_Lion)
+        setPresentationModeEnabled(true);
+#endif /* Q_WS_MAC */
+}
 
 void UIMachineLogicFullscreen::sltGuestMonitorChange(KGuestMonitorChangedEventType changeType, ulong uScreenId, QRect screenGeo)
@@ -307,8 +315,8 @@
         return;
 
-#ifdef Q_WS_MAC // TODO: Is that "darwinSetFrontMostProcess" really need here?
+#ifdef Q_WS_MAC
     /* We have to make sure that we are getting the front most process.
      * This is necessary for Qt versions > 4.3.3: */
-    ::darwinSetFrontMostProcess();
+    darwinSetFrontMostProcess();
 #endif /* Q_WS_MAC */
 
@@ -321,25 +329,18 @@
 
     /* Connect multi-screen layout change handler: */
-    for (int i = 0; i < machineWindows().size(); ++i)
-        connect(m_pScreenLayout, SIGNAL(sigScreenLayoutChanged()),
-                static_cast<UIMachineWindowFullscreen*>(machineWindows()[i]), SLOT(sltShowInNecessaryMode()));
-
-#ifdef Q_WS_MAC
-    /* Make sure 'presentation mode' is enabled/updated for Lion and previous: */
-    if (vboxGlobal().osRelease() <= MacOSXRelease_Lion)
-    {
-        connect(m_pScreenLayout, SIGNAL(sigScreenLayoutChanged()),
-                this, SLOT(sltScreenLayoutChanged()));
+    connect(m_pScreenLayout, SIGNAL(sigScreenLayoutChanged()),
+            this, SLOT(sltScreenLayoutChanged()));
+
+#ifdef Q_WS_MAC
+    /* Activate 'presentation mode' for Lion and previous: */
+    if (vboxGlobal().osRelease() <= MacOSXRelease_Lion)
         setPresentationModeEnabled(true);
-    }
-#endif /* Q_WS_MAC */
-
-#ifdef Q_WS_MAC
-    /* On ML and later: */
-    if (vboxGlobal().osRelease() > MacOSXRelease_Lion)
-    {
+    /* For ML and next: */
+    else
+    {
+        /* For all the machine-window(s): */
         foreach (UIMachineWindow *pMachineWindow, machineWindows())
         {
-            /* Keep sync for machine-logic/window(s): */
+            /* Watch for native fullscreen signals: */
             connect(pMachineWindow, SIGNAL(sigNotifyAboutNativeFullscreenDidEnter()),
                     this, SLOT(sltHandleNativeFullscreenDidEnter()));
@@ -347,7 +348,7 @@
                     this, SLOT(sltHandleNativeFullscreenDidExit()));
             /* Enter native fullscreen mode: */
-            if (darwinScreensHaveSeparateSpaces() || pMachineWindow->screenId() == 0)
-                if (!darwinIsInFullscreenMode(pMachineWindow))
-                    darwinToggleFullscreenMode(pMachineWindow);
+            if (   (darwinScreensHaveSeparateSpaces() || pMachineWindow->screenId() == 0)
+                && !darwinIsInFullscreenMode(pMachineWindow))
+                darwinToggleFullscreenMode(pMachineWindow);
         }
     }
@@ -377,25 +378,10 @@
     setMachineWindowsCreated(false);
 
-#ifdef Q_WS_MAC
-    /* On ML and later: */
-    if (vboxGlobal().osRelease() > MacOSXRelease_Lion)
-    {
-        foreach (UIMachineWindow *pMachineWindow, machineWindows())
-        {
-            /* Leave sync for machine-logic/window(s): */
-            disconnect(pMachineWindow, SIGNAL(sigNotifyAboutNativeFullscreenDidEnter()),
-                       this, SLOT(sltHandleNativeFullscreenDidEnter()));
-            disconnect(pMachineWindow, SIGNAL(sigNotifyAboutNativeFullscreenDidExit()),
-                       this, SLOT(sltHandleNativeFullscreenDidExit()));
-        }
-    }
-#endif/* Q_WS_MAC */
-
-    /* Cleanup machine-window(s): */
+    /* Destroy machine-window(s): */
     foreach (UIMachineWindow *pMachineWindow, machineWindows())
         UIMachineWindow::destroy(pMachineWindow);
 
 #ifdef Q_WS_MAC
-    /* Make sure 'presentation mode' is disabled for Lion and previous: */
+    /* Deactivate 'presentation mode' for Lion and previous: */
     if (vboxGlobal().osRelease() <= MacOSXRelease_Lion)
         setPresentationModeEnabled(false);
Index: /trunk/src/VBox/Frontends/VirtualBox/src/runtime/fullscreen/UIMachineLogicFullscreen.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/runtime/fullscreen/UIMachineLogicFullscreen.h	(revision 50534)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/runtime/fullscreen/UIMachineLogicFullscreen.h	(revision 50535)
@@ -65,6 +65,9 @@
 #ifdef Q_WS_MAC
     void sltChangePresentationMode(bool fEnabled);
+#endif /* Q_WS_MAC */
+
+    /** Updates machine-window(s) location/size on screen-layout changes. */
     void sltScreenLayoutChanged();
-#endif /* Q_WS_MAC */
+
     void sltGuestMonitorChange(KGuestMonitorChangedEventType changeType, ulong uScreenId, QRect screenGeo);
     void sltHostScreenCountChanged();
Index: /trunk/src/VBox/Frontends/VirtualBox/src/runtime/fullscreen/UIMachineWindowFullscreen.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/runtime/fullscreen/UIMachineWindowFullscreen.h	(revision 50534)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/runtime/fullscreen/UIMachineWindowFullscreen.h	(revision 50535)
@@ -54,7 +54,4 @@
     void sltMachineStateChanged();
 
-    /* Show in necessary mode: */
-    void sltShowInNecessaryMode() { showInNecessaryMode(); }
-
     /* Popup main-menu: */
     void sltPopupMainMenu();
Index: /trunk/src/VBox/Frontends/VirtualBox/src/runtime/seamless/UIMachineLogicSeamless.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/runtime/seamless/UIMachineLogicSeamless.cpp	(revision 50534)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/runtime/seamless/UIMachineLogicSeamless.cpp	(revision 50535)
@@ -146,4 +146,11 @@
 }
 
+void UIMachineLogicSeamless::sltScreenLayoutChanged()
+{
+    /* Update machine-window(s) location/size: */
+    foreach (UIMachineWindow *pMachineWindow, machineWindows())
+        pMachineWindow->showInNecessaryMode();
+}
+
 void UIMachineLogicSeamless::sltGuestMonitorChange(KGuestMonitorChangedEventType changeType, ulong uScreenId, QRect screenGeo)
 {
@@ -213,8 +220,8 @@
         return;
 
-#ifdef Q_WS_MAC // TODO: Is that really need here?
+#ifdef Q_WS_MAC
     /* We have to make sure that we are getting the front most process.
      * This is necessary for Qt versions > 4.3.3: */
-    ::darwinSetFrontMostProcess();
+    darwinSetFrontMostProcess();
 #endif /* Q_WS_MAC */
 
@@ -222,12 +229,11 @@
     m_pScreenLayout->update();
 
-    /* Create machine window(s): */
+    /* Create machine-window(s): */
     for (uint cScreenId = 0; cScreenId < session().GetMachine().GetMonitorCount(); ++cScreenId)
         addMachineWindow(UIMachineWindow::create(this, cScreenId));
 
     /* Connect multi-screen layout change handler: */
-    for (int i = 0; i < machineWindows().size(); ++i)
-        connect(m_pScreenLayout, SIGNAL(sigScreenLayoutChanged()),
-                static_cast<UIMachineWindowSeamless*>(machineWindows()[i]), SLOT(sltShowInNecessaryMode()));
+    connect(m_pScreenLayout, SIGNAL(sigScreenLayoutChanged()),
+            this, SLOT(sltScreenLayoutChanged()));
 
     /* Mark machine-window(s) created: */
@@ -254,5 +260,5 @@
     setMachineWindowsCreated(false);
 
-    /* Cleanup machine-window(s): */
+    /* Destroy machine-window(s): */
     foreach (UIMachineWindow *pMachineWindow, machineWindows())
         UIMachineWindow::destroy(pMachineWindow);
Index: /trunk/src/VBox/Frontends/VirtualBox/src/runtime/seamless/UIMachineLogicSeamless.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/runtime/seamless/UIMachineLogicSeamless.h	(revision 50534)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/runtime/seamless/UIMachineLogicSeamless.h	(revision 50535)
@@ -54,4 +54,7 @@
     void sltMachineStateChanged();
 
+    /** Updates machine-window(s) location/size on screen-layout changes. */
+    void sltScreenLayoutChanged();
+
     void sltGuestMonitorChange(KGuestMonitorChangedEventType changeType, ulong uScreenId, QRect screenGeo);
     void sltHostScreenCountChanged();
Index: /trunk/src/VBox/Frontends/VirtualBox/src/runtime/seamless/UIMachineWindowSeamless.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/runtime/seamless/UIMachineWindowSeamless.h	(revision 50534)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/runtime/seamless/UIMachineWindowSeamless.h	(revision 50535)
@@ -42,7 +42,4 @@
     void sltMachineStateChanged();
 #endif /* !Q_WS_MAC */
-
-    /* Show in necessary mode: */
-    void sltShowInNecessaryMode() { showInNecessaryMode(); }
 
     /* Popup main menu: */
