Index: trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIActionPoolRuntime.cpp
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIActionPoolRuntime.cpp	(revision 52238)
+++ trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIActionPoolRuntime.cpp	(revision 52239)
@@ -18,4 +18,5 @@
 /* GUI includes: */
 #include "UIActionPoolRuntime.h"
+#include "UIMultiScreenLayout.h"
 #include "UIExtraDataManager.h"
 #include "UIShortcutPool.h"
@@ -1262,4 +1263,5 @@
     : UIActionPool(UIActionPoolType_Runtime, fTemporary)
     , m_pSession(0)
+    , m_pMultiScreenLayout(0)
 {
 }
@@ -1271,7 +1273,29 @@
 }
 
-UISession* UIActionPoolRuntime::session() const
-{
-    return m_pSession;
+void UIActionPoolRuntime::setMultiScreenLayout(UIMultiScreenLayout *pMultiScreenLayout)
+{
+    /* Disconnect old stuff: */
+    if (m_pMultiScreenLayout)
+    {
+        disconnect(this, SIGNAL(sigNotifyAboutTriggeringViewMultiscreen(int, int)),
+                   m_pMultiScreenLayout, SLOT(sltHandleScreenLayoutChange(int, int)));
+        disconnect(m_pMultiScreenLayout, SIGNAL(sigScreenLayoutUpdate()),
+                   this, SLOT(sltHandleScreenLayoutUpdate()));
+    }
+
+    /* Assign new multi-screen layout: */
+    m_pMultiScreenLayout = pMultiScreenLayout;
+
+    /* Connect new stuff: */
+    if (m_pMultiScreenLayout)
+    {
+        connect(this, SIGNAL(sigNotifyAboutTriggeringViewMultiscreen(int, int)),
+                m_pMultiScreenLayout, SLOT(sltHandleScreenLayoutChange(int, int)));
+        connect(m_pMultiScreenLayout, SIGNAL(sigScreenLayoutUpdate()),
+                this, SLOT(sltHandleScreenLayoutUpdate()));
+    }
+
+    /* Invalidate View menu: */
+    m_invalidations << UIActionIndexRT_M_View;
 }
 
@@ -1358,4 +1382,14 @@
 }
 
+void UIActionPoolRuntime::sltPrepareMenuViewMultiscreen()
+{
+    /* Make sure sender is valid: */
+    QMenu *pMenu = qobject_cast<QMenu*>(sender());
+    AssertPtrReturnVoid(pMenu);
+
+    /* Call to corresponding handler: */
+    updateMenuViewMultiscreen(pMenu);
+}
+
 void UIActionPoolRuntime::sltHandleActionTriggerViewResize(QAction *pAction)
 {
@@ -1367,4 +1401,21 @@
     const QSize size = pAction->property("Requested Size").toSize();
     emit sigNotifyAboutTriggeringViewResize(iGuestScreenIndex, size);
+}
+
+void UIActionPoolRuntime::sltHandleActionTriggerViewMultiscreen(QAction *pAction)
+{
+    /* Make sure sender is valid: */
+    AssertPtrReturnVoid(pAction);
+
+    /* Send request to remap guest-screen to required host-screen: */
+    const int iGuestScreenIndex = pAction->property("Guest Screen Index").toInt();
+    const int iHostScreenIndex = pAction->property("Host Screen Index").toInt();
+    emit sigNotifyAboutTriggeringViewMultiscreen(iGuestScreenIndex, iHostScreenIndex);
+}
+
+void UIActionPoolRuntime::sltHandleScreenLayoutUpdate()
+{
+    /* Invalidate View menu: */
+    m_invalidations << UIActionIndexRT_M_View;
 }
 
@@ -1919,6 +1970,7 @@
 
 
-    /* Do we have to show resize menu? */
+    /* Do we have to show resize or multiscreen menu? */
     const bool fAllowToShowActionResize = isAllowedInMenuView(RuntimeMenuViewActionType_Resize);
+    const bool fAllowToShowActionMultiscreen = isAllowedInMenuView(RuntimeMenuViewActionType_Multiscreen);
     if (fAllowToShowActionResize && session())
     {
@@ -1930,4 +1982,20 @@
             pSubMenu->setProperty("Guest Screen Index", iGuestScreenIndex);
             connect(pSubMenu, SIGNAL(aboutToShow()), this, SLOT(sltPrepareMenuViewResize()));
+        }
+    }
+    else if (fAllowToShowActionMultiscreen && multiScreenLayout())
+    {
+        /* Only if host/guest screen count differes from 1: */
+        if (session()->hostScreens().size() > 1 ||
+            session()->frameBuffers().size() > 1)
+        {
+            for (int iGuestScreenIndex = 0; iGuestScreenIndex < session()->frameBuffers().size(); ++iGuestScreenIndex)
+            {
+                /* Add 'Virtual Screen %1' menu: */
+                QMenu *pSubMenu = pMenu->addMenu(QApplication::translate("UIMultiScreenLayout",
+                                                                         "Virtual Screen %1").arg(iGuestScreenIndex + 1));
+                pSubMenu->setProperty("Guest Screen Index", iGuestScreenIndex);
+                connect(pSubMenu, SIGNAL(aboutToShow()), this, SLOT(sltPrepareMenuViewMultiscreen()));
+            }
         }
     }
@@ -2077,4 +2145,43 @@
 }
 
+void UIActionPoolRuntime::updateMenuViewMultiscreen(QMenu *pMenu)
+{
+    /* Make sure UI session defined: */
+    AssertPtrReturnVoid(multiScreenLayout());
+
+    /* Clear contents: */
+    pMenu->clear();
+
+    /* Get corresponding screen index and size: */
+    const int iGuestScreenIndex = pMenu->property("Guest Screen Index").toInt();
+
+    /* Create exclusive action-group: */
+    QActionGroup *pActionGroup = new QActionGroup(pMenu);
+    AssertPtrReturnVoid(pActionGroup);
+    {
+        /* Configure exclusive action-group: */
+        pActionGroup->setExclusive(true);
+        for (int iHostScreenIndex = 0; iHostScreenIndex < session()->hostScreens().size(); ++iHostScreenIndex)
+        {
+            QAction *pAction = pActionGroup->addAction(UIMultiScreenLayout::tr("Use Host Screen %1")
+                                                                               .arg(iHostScreenIndex + 1));
+            AssertPtrReturnVoid(pAction);
+            {
+                pAction->setCheckable(true);
+                pAction->setProperty("Guest Screen Index", iGuestScreenIndex);
+                pAction->setProperty("Host Screen Index", iHostScreenIndex);
+                if (multiScreenLayout()->hasHostScreenForGuestScreen(iGuestScreenIndex) &&
+                    multiScreenLayout()->hostScreenForGuestScreen(iGuestScreenIndex) == iHostScreenIndex)
+                    pAction->setChecked(true);
+            }
+        }
+        /* Insert group actions into menu: */
+        pMenu->addActions(pActionGroup->actions());
+        /* Install listener for exclusive action-group: */
+        connect(pActionGroup, SIGNAL(triggered(QAction*)),
+                this, SLOT(sltHandleActionTriggerViewMultiscreen(QAction*)));
+    }
+}
+
 void UIActionPoolRuntime::updateMenuDevices()
 {
Index: trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIActionPoolRuntime.h
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIActionPoolRuntime.h	(revision 52238)
+++ trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIActionPoolRuntime.h	(revision 52239)
@@ -28,4 +28,5 @@
 /* Forward declarations: */
 class UISession;
+class UIMultiScreenLayout;
 
 /** Runtime action-pool index enum.
@@ -122,4 +123,6 @@
     /** Notifies about 'View' : 'Resize' menu action trigger. */
     void sigNotifyAboutTriggeringViewResize(int iGuestScreenIndex, const QSize &size);
+    /** Notifies about 'View' : 'Multiscreen' menu action trigger. */
+    void sigNotifyAboutTriggeringViewMultiscreen(int iGuestScreenIndex, int iHostScreenIndex);
 
 public:
@@ -129,5 +132,11 @@
     void setSession(UISession *pSession);
     /** Returns UI session object reference. */
-    UISession* session() const;
+    UISession* session() const { return m_pSession; }
+
+    /** Defines UI multi-screen layout object reference.
+      * @note For menus which uses it to build contents. */
+    void setMultiScreenLayout(UIMultiScreenLayout *pMultiScreenLayout);
+    /** Returns UI multi-screen layout object reference. */
+    UIMultiScreenLayout* multiScreenLayout() const { return m_pMultiScreenLayout; }
 
     /** Returns whether the menu with passed @a type is allowed in menu-bar. */
@@ -162,7 +171,14 @@
     /** Prepare 'View' : 'Resize' menu routine. */
     void sltPrepareMenuViewResize();
+    /** Prepare 'View' : 'Multiscreen' menu routine. */
+    void sltPrepareMenuViewMultiscreen();
 
     /** Handles 'View' : 'Resize' menu @a pAction trigger. */
     void sltHandleActionTriggerViewResize(QAction *pAction);
+    /** Handles 'View' : 'Multiscreen' menu @a pAction trigger. */
+    void sltHandleActionTriggerViewMultiscreen(QAction *pAction);
+
+    /** Handles screen-layout update. */
+    void sltHandleScreenLayoutUpdate();
 
 protected:
@@ -199,4 +215,6 @@
     /** Update 'View' : 'Resize' @a pMenu routine. */
     void updateMenuViewResize(QMenu *pMenu);
+    /** Update 'View' : 'Multiscreen' @a pMenu routine. */
+    void updateMenuViewMultiscreen(QMenu *pMenu);
     /** Update 'Devices' menu routine. */
     void updateMenuDevices();
@@ -229,4 +247,6 @@
     /** Holds the UI session object reference. */
     UISession *m_pSession;
+    /** Holds the UI multi-screen layout object reference. */
+    UIMultiScreenLayout *m_pMultiScreenLayout;
 
     /** Holds the list of main-menus. */
Index: trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMultiScreenLayout.cpp
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMultiScreenLayout.cpp	(revision 52238)
+++ trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMultiScreenLayout.cpp	(revision 52239)
@@ -43,23 +43,8 @@
 UIMultiScreenLayout::UIMultiScreenLayout(UIMachineLogic *pMachineLogic)
     : m_pMachineLogic(pMachineLogic)
-    , m_pViewMenu(0)
 {
     /* Calculate host/guest screen count: */
     calculateHostMonitorCount();
     calculateGuestScreenCount();
-}
-
-UIMultiScreenLayout::~UIMultiScreenLayout()
-{
-    /* Cleanup view-menu: */
-    cleanupViewMenu();
-}
-
-void UIMultiScreenLayout::setViewMenu(QMenu *pViewMenu)
-{
-    /* Assign view-menu: */
-    m_pViewMenu = pViewMenu;
-    /* Prepare view-menu: */
-    prepareViewMenu();
 }
 
@@ -178,6 +163,6 @@
     }
 
-    /* Update menu actions: */
-    updateMenuActions(false);
+    /* Notifies about layout update: */
+    emit sigScreenLayoutUpdate();
 
     LogRelFlow(("UIMultiScreenLayout::update: Finished!\n"));
@@ -191,6 +176,4 @@
     calculateHostMonitorCount();
     calculateGuestScreenCount();
-    /* Update view-menu: */
-    prepareViewMenu();
     /* Update layout: */
     update();
@@ -242,11 +225,6 @@
 }
 
-void UIMultiScreenLayout::sltScreenLayoutChanged(QAction *pAction)
-{
-    /* Parse incoming information: */
-    int a = pAction->data().toInt();
-    int iRequestedGuestScreen = RT_LOWORD(a);
-    int iRequestedHostScreen = RT_HIWORD(a);
-
+void UIMultiScreenLayout::sltHandleScreenLayoutChange(int iRequestedGuestScreen, int iRequestedHostScreen)
+{
     /* Search for the virtual screen which is currently displayed on the
      * requested host screen. When there is one found, we swap both. */
@@ -282,8 +260,10 @@
     /* Swap the maps: */
     m_screenMap = tmpMap;
-    /* Update menu actions: */
-    updateMenuActions(true);
-    /* Inform the observer: */
-    emit sigScreenLayoutChanged();
+
+    /* Save guest-to-host mapping: */
+    saveScreenMapping();
+
+    /* Notifies about layout change: */
+    emit sigScreenLayoutChange();
 }
 
@@ -307,79 +287,10 @@
 }
 
-void UIMultiScreenLayout::prepareViewMenu()
-{
-    /* Make sure view-menu was set: */
-    if (!m_pViewMenu)
-        return;
-
-    /* Cleanup menu first: */
-    cleanupViewMenu();
-
-    /* If we do have more than one host/guest screen: */
-    if (m_cHostScreens > 1 || m_guestScreens.size() > 1)
-    {
-        m_pViewMenu->addSeparator();
-        foreach (int iGuestScreen, m_guestScreens)
-        {
-            m_screenMenuList << m_pViewMenu->addMenu(tr("Virtual Screen %1").arg(iGuestScreen + 1));
-            m_screenMenuList.last()->menuAction()->setData(true);
-            QActionGroup *pScreenGroup = new QActionGroup(m_screenMenuList.last());
-            pScreenGroup->setExclusive(true);
-            connect(pScreenGroup, SIGNAL(triggered(QAction*)), this, SLOT(sltScreenLayoutChanged(QAction*)));
-            for (int a = 0; a < m_cHostScreens; ++a)
-            {
-                QAction *pAction = pScreenGroup->addAction(tr("Use Host Screen %1").arg(a + 1));
-                pAction->setCheckable(true);
-                pAction->setData(RT_MAKE_U32(iGuestScreen, a));
-            }
-            m_screenMenuList.last()->addActions(pScreenGroup->actions());
-        }
-    }
-
-    /* Update menu actions: */
-    updateMenuActions(false);
-}
-
-void UIMultiScreenLayout::cleanupViewMenu()
-{
-    /* Make sure view-menu was set: */
-    if (!m_pViewMenu)
-        return;
-
-    /* Cleanup view-menu actions: */
-    while (!m_screenMenuList.isEmpty())
-        delete m_screenMenuList.takeFirst();
-}
-
-void UIMultiScreenLayout::updateMenuActions(bool fWithSave)
-{
-    /* Make sure view-menu was set: */
-    if (!m_pViewMenu)
-        return;
-
-    /* Get the list of all view-menu actions: */
-    QList<QAction*> viewMenuActions = m_pMachineLogic->actionPool()->action(UIActionIndexRT_M_View)->menu()->actions();
-    /* Get the list of all view related actions: */
-    QList<QAction*> viewActions;
-    for (int i = 0; i < viewMenuActions.size(); ++i)
-        if (viewMenuActions[i]->data().toBool())
-            viewActions << viewMenuActions[i];
-    /* Update view actions: */
-    CMachine machine = m_pMachineLogic->session().GetMachine();
-    for (int iViewAction = 0; iViewAction < viewActions.size(); ++iViewAction)
-    {
-        int iGuestScreen = m_guestScreens[iViewAction];
-        int iHostScreen = m_screenMap.value(iGuestScreen, -1);
-        if (fWithSave)
-            gEDataManager->setHostScreenForPassedGuestScreen(iViewAction, iHostScreen, vboxGlobal().managedVMUuid());
-        QList<QAction*> screenActions = viewActions.at(iViewAction)->menu()->actions();
-        /* Update screen actions: */
-        for (int j = 0; j < screenActions.size(); ++j)
-        {
-            QAction *pTmpAction = screenActions.at(j);
-            pTmpAction->blockSignals(true);
-            pTmpAction->setChecked(RT_HIWORD(pTmpAction->data().toInt()) == iHostScreen);
-            pTmpAction->blockSignals(false);
-        }
+void UIMultiScreenLayout::saveScreenMapping()
+{
+    foreach (const int &iGuestScreen, m_guestScreens)
+    {
+        const int iHostScreen = m_screenMap.value(iGuestScreen, -1);
+        gEDataManager->setHostScreenForPassedGuestScreen(iGuestScreen, iHostScreen, vboxGlobal().managedVMUuid());
     }
 }
Index: trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMultiScreenLayout.h
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMultiScreenLayout.h	(revision 52238)
+++ trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMultiScreenLayout.h	(revision 52239)
@@ -36,6 +36,8 @@
 signals:
 
-    /* Notifier: Layout change stuff: */
-    void sigScreenLayoutChanged();
+    /** Notifies about layout update. */
+    void sigScreenLayoutUpdate();
+    /** Notifies about layout change. */
+    void sigScreenLayoutChange();
 
 public:
@@ -43,8 +45,4 @@
     /* Constructor/destructor: */
     UIMultiScreenLayout(UIMachineLogic *pMachineLogic);
-    ~UIMultiScreenLayout();
-
-    /* API: View-menu stuff: */
-    void setViewMenu(QMenu *pViewMenu);
 
     /* API: Update stuff: */
@@ -63,5 +61,5 @@
 
     /* Handler: Screen change stuff: */
-    void sltScreenLayoutChanged(QAction *pAction);
+    void sltHandleScreenLayoutChange(int iRequestedGuestScreen, int iRequestedHostScreen);
 
 private:
@@ -70,11 +68,7 @@
     void calculateHostMonitorCount();
     void calculateGuestScreenCount();
-    void prepareViewMenu();
-
-    /* Helper: Cleanup stuff: */
-    void cleanupViewMenu();
 
     /* Other helpers: */
-    void updateMenuActions(bool fWithSave);
+    void saveScreenMapping();
     quint64 memoryRequirements(const QMap<int, int> &screenLayout) const;
 
@@ -85,5 +79,4 @@
     int m_cHostScreens;
     QMap<int, int> m_screenMap;
-    QMenu *m_pViewMenu;
     QList<QMenu*> m_screenMenuList;
 };
Index: trunk/src/VBox/Frontends/VirtualBox/src/runtime/UISession.cpp
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/runtime/UISession.cpp	(revision 52238)
+++ trunk/src/VBox/Frontends/VirtualBox/src/runtime/UISession.cpp	(revision 52239)
@@ -839,8 +839,6 @@
 
     /* Check if display count changed: */
-    if (pDesktop->screenCount() != m_screens.size())
-    {
-        /* Recache display data: */
-        recacheDisplayData();
+    if (pDesktop->screenCount() != m_hostScreens.size())
+    {
         /* Reset watchdog: */
         m_pWatchdogDisplayChange->setProperty("tryNumber", 0);
@@ -853,8 +851,6 @@
         for (int iScreenIndex = 0; iScreenIndex < pDesktop->screenCount(); ++iScreenIndex)
         {
-            if (pDesktop->screenGeometry(iScreenIndex) != m_screens.at(iScreenIndex))
+            if (pDesktop->screenGeometry(iScreenIndex) != m_hostScreens.at(iScreenIndex))
             {
-                /* Recache display data: */
-                recacheDisplayData();
                 /* Reset watchdog: */
                 m_pWatchdogDisplayChange->setProperty("tryNumber", 0);
@@ -885,4 +881,7 @@
     LogRelFlow(("UISession: Host-screen count changed.\n"));
 
+    /* Recache display data: */
+    updateHostScreenData();
+
     /* Notify current machine-logic: */
     emit sigHostScreenCountChanged();
@@ -892,4 +891,7 @@
 {
     LogRelFlow(("UISession: Host-screen geometry changed.\n"));
+
+    /* Recache display data: */
+    updateHostScreenData();
 
     /* Notify current machine-logic: */
@@ -1088,7 +1090,8 @@
 void UISession::prepareScreens()
 {
+    /* Recache display data: */
+    updateHostScreenData();
+
 #ifdef Q_WS_MAC
-    /* Recache display data: */
-    recacheDisplayData();
     /* Prepare display-change watchdog: */
     m_pWatchdogDisplayChange = new QTimer(this);
@@ -1621,15 +1624,11 @@
 }
 
-#ifdef Q_WS_MAC
-/** MacOS X: Recaches display-configuration data. */
-void UISession::recacheDisplayData()
-{
-    /* Recache display data: */
-    m_screens.clear();
+void UISession::updateHostScreenData()
+{
+    m_hostScreens.clear();
     QDesktopWidget *pDesktop = QApplication::desktop();
     for (int iScreenIndex = 0; iScreenIndex < pDesktop->screenCount(); ++iScreenIndex)
-        m_screens << pDesktop->screenGeometry(iScreenIndex);
-}
-#endif /* Q_WS_MAC */
+        m_hostScreens << pDesktop->screenGeometry(iScreenIndex);
+}
 
 #ifdef VBOX_GUI_WITH_KEYS_RESET_HANDLER
Index: trunk/src/VBox/Frontends/VirtualBox/src/runtime/UISession.h
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/runtime/UISession.h	(revision 52238)
+++ trunk/src/VBox/Frontends/VirtualBox/src/runtime/UISession.h	(revision 52239)
@@ -117,4 +117,10 @@
     /** @} */
 
+    /** @name Host-screen configuration variables.
+     ** @{ */
+    /** Returns the list of host-screen geometries we currently have. */
+    QList<QRect> hostScreens() const { return m_hostScreens; }
+    /** @} */
+
     /** @name Application Close configuration stuff.
      * @{ */
@@ -315,8 +321,6 @@
     int countOfVisibleWindows();
 
-#ifdef Q_WS_MAC
-    /* Helper: Display reconfiguration stuff: */
-    void recacheDisplayData();
-#endif /* Q_WS_MAC */
+    /** Update host-screen data. */
+    void updateHostScreenData();
 
     /* Private variables: */
@@ -373,13 +377,13 @@
 #endif
 
+    /** @name Host-screen configuration variables.
+     * @{ */
+    /** Holds the list of host-screen geometries we currently have. */
+    QList<QRect> m_hostScreens;
 #ifdef Q_WS_MAC
-    /** @name MacOS X: Display reconfiguration variables.
-     * @{ */
-    /** MacOS X: Watchdog timer looking for display reconfiguration. */
+    /** Mac OS X: Watchdog timer looking for display reconfiguration. */
     QTimer *m_pWatchdogDisplayChange;
-    /** MacOS X: A list of display geometries we currently have. */
-    QList<QRect> m_screens;
-    /** @} */
 #endif /* Q_WS_MAC */
+    /** @} */
 
     /** @name Application Close configuration variables.
Index: trunk/src/VBox/Frontends/VirtualBox/src/runtime/fullscreen/UIMachineLogicFullscreen.cpp
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/runtime/fullscreen/UIMachineLogicFullscreen.cpp	(revision 52238)
+++ trunk/src/VBox/Frontends/VirtualBox/src/runtime/fullscreen/UIMachineLogicFullscreen.cpp	(revision 52239)
@@ -47,4 +47,5 @@
     /* Create multiscreen layout: */
     m_pScreenLayout = new UIMultiScreenLayout(this);
+    actionPool()->toRuntime()->setMultiScreenLayout(m_pScreenLayout);
 }
 
@@ -52,4 +53,5 @@
 {
     /* Delete multiscreen layout: */
+    actionPool()->toRuntime()->setMultiScreenLayout(0);
     delete m_pScreenLayout;
 }
@@ -503,7 +505,4 @@
     m_pScreenLayout->update();
 
-    // TODO: Make this through action-pool.
-    m_pScreenLayout->setViewMenu(actionPool()->action(UIActionIndexRT_M_View)->menu());
-
     /* Create machine-window(s): */
     for (uint cScreenId = 0; cScreenId < session().GetMachine().GetMonitorCount(); ++cScreenId)
@@ -517,5 +516,5 @@
 
     /* Connect multi-screen layout change handler: */
-    connect(m_pScreenLayout, SIGNAL(sigScreenLayoutChanged()),
+    connect(m_pScreenLayout, SIGNAL(sigScreenLayoutChange()),
             this, SLOT(sltScreenLayoutChanged()));
 
Index: trunk/src/VBox/Frontends/VirtualBox/src/runtime/seamless/UIMachineLogicSeamless.cpp
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/runtime/seamless/UIMachineLogicSeamless.cpp	(revision 52238)
+++ trunk/src/VBox/Frontends/VirtualBox/src/runtime/seamless/UIMachineLogicSeamless.cpp	(revision 52239)
@@ -46,4 +46,5 @@
     /* Create multiscreen layout: */
     m_pScreenLayout = new UIMultiScreenLayout(this);
+    actionPool()->toRuntime()->setMultiScreenLayout(m_pScreenLayout);
 }
 
@@ -51,4 +52,5 @@
 {
     /* Delete multiscreen layout: */
+    actionPool()->toRuntime()->setMultiScreenLayout(0);
     delete m_pScreenLayout;
 }
@@ -251,7 +253,4 @@
     m_pScreenLayout->update();
 
-    // TODO: Make this through action-pool.
-    m_pScreenLayout->setViewMenu(actionPool()->action(UIActionIndexRT_M_View)->menu());
-
     /* Create machine-window(s): */
     for (uint cScreenId = 0; cScreenId < session().GetMachine().GetMonitorCount(); ++cScreenId)
@@ -265,5 +264,5 @@
 
     /* Connect multi-screen layout change handler: */
-    connect(m_pScreenLayout, SIGNAL(sigScreenLayoutChanged()),
+    connect(m_pScreenLayout, SIGNAL(sigScreenLayoutChange()),
             this, SLOT(sltScreenLayoutChanged()));
 
