Index: /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIActionPoolRuntime.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIActionPoolRuntime.cpp	(revision 43621)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIActionPoolRuntime.cpp	(revision 43622)
@@ -529,4 +529,24 @@
     {
         menu()->setTitle(menuText(QApplication::translate("UIActionPool", "Shared &Clipboard")));
+    }
+};
+
+class MenuDragAndDropAction : public UIActionMenu
+{
+    Q_OBJECT;
+
+public:
+
+    MenuDragAndDropAction(QObject *pParent)
+        : UIActionMenu(pParent, ":/vm_open_filemanager_16px.png", ":/vm_open_filemanager_disabled_16px.png")
+    {
+        retranslateUi();
+    }
+
+protected:
+
+    void retranslateUi()
+    {
+        menu()->setTitle(menuText(QApplication::translate("UIActionPool", "Drag'n'Drop")));
     }
 };
@@ -930,4 +950,7 @@
         delete m_pool[UIActionIndexRuntime_Menu_SharedClipboard];
     m_pool[UIActionIndexRuntime_Menu_SharedClipboard] = new MenuSharedClipboardAction(this);
+    if (m_pool[UIActionIndexRuntime_Menu_DragAndDrop])
+        delete m_pool[UIActionIndexRuntime_Menu_DragAndDrop];
+    m_pool[UIActionIndexRuntime_Menu_DragAndDrop] = new MenuDragAndDropAction(this);
     if (m_pool[UIActionIndexRuntime_Menu_NetworkAdapters])
         delete m_pool[UIActionIndexRuntime_Menu_NetworkAdapters];
Index: /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIActionPoolRuntime.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIActionPoolRuntime.h	(revision 43621)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIActionPoolRuntime.h	(revision 43622)
@@ -57,4 +57,5 @@
     UIActionIndexRuntime_Menu_USBDevices,
     UIActionIndexRuntime_Menu_SharedClipboard,
+    UIActionIndexRuntime_Menu_DragAndDrop,
     UIActionIndexRuntime_Menu_NetworkAdapters,
     UIActionIndexRuntime_Simple_NetworkAdaptersDialog,
Index: /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineLogic.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineLogic.cpp	(revision 43621)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineLogic.cpp	(revision 43622)
@@ -445,4 +445,5 @@
     , m_pRunningOrPausedActions(0)
     , m_pSharedClipboardActions(0)
+    , m_pDragAndDropActions(0)
     , m_fIsWindowsCreated(false)
     , m_fIsPreventAutoClose(false)
@@ -493,4 +494,9 @@
         foreach (QAction *pAction, m_pSharedClipboardActions->actions())
             pAction->setText(gpConverter->toString(pAction->data().value<KClipboardMode>()));
+    }
+    if (m_pDragAndDropActions)
+    {
+        foreach (QAction *pAction, m_pDragAndDropActions->actions())
+            pAction->setText(gpConverter->toString(pAction->data().value<KDragAndDropMode>()));
     }
 }
@@ -605,4 +611,5 @@
     m_pRunningOrPausedActions->addAction(gActionPool->action(UIActionIndexRuntime_Menu_USBDevices));
     m_pRunningOrPausedActions->addAction(gActionPool->action(UIActionIndexRuntime_Menu_SharedClipboard));
+    m_pRunningOrPausedActions->addAction(gActionPool->action(UIActionIndexRuntime_Menu_DragAndDrop));
     m_pRunningOrPausedActions->addAction(gActionPool->action(UIActionIndexRuntime_Menu_NetworkAdapters));
     m_pRunningOrPausedActions->addAction(gActionPool->action(UIActionIndexRuntime_Simple_NetworkAdaptersDialog));
@@ -656,4 +663,6 @@
     connect(gActionPool->action(UIActionIndexRuntime_Menu_SharedClipboard)->menu(), SIGNAL(aboutToShow()),
             this, SLOT(sltPrepareSharedClipboardMenu()));
+    connect(gActionPool->action(UIActionIndexRuntime_Menu_DragAndDrop)->menu(), SIGNAL(aboutToShow()),
+            this, SLOT(sltPrepareDragAndDropMenu()));
     connect(gActionPool->action(UIActionIndexRuntime_Simple_NetworkAdaptersDialog), SIGNAL(triggered()),
             this, SLOT(sltOpenNetworkAdaptersDialog()));
@@ -1618,4 +1627,42 @@
 }
 
+void UIMachineLogic::sltPrepareDragAndDropMenu()
+{
+    /* Get and check the sender menu object: */
+    QMenu *pMenu = qobject_cast<QMenu*>(sender());
+    QMenu *pDragAndDropMenu = gActionPool->action(UIActionIndexRuntime_Menu_DragAndDrop)->menu();
+    AssertMsg(pMenu == pDragAndDropMenu, ("This slot should only be called on hovering Drag'n'drop menu!\n"));
+    Q_UNUSED(pDragAndDropMenu);
+
+    /* First run: */
+    if (!m_pDragAndDropActions)
+    {
+        m_pDragAndDropActions = new QActionGroup(this);
+        for (int i = KDragAndDropMode_Disabled; i < KDragAndDropMode_Max; ++i)
+        {
+            KDragAndDropMode mode = (KDragAndDropMode)i;
+            QAction *pAction = pMenu->addAction(gpConverter->toString(mode));
+            pAction->setData(QVariant::fromValue(mode));
+            pAction->setCheckable(true);
+            pAction->setChecked(session().GetMachine().GetDragAndDropMode() == mode);
+            m_pDragAndDropActions->addAction(pAction);
+        }
+        connect(m_pDragAndDropActions, SIGNAL(triggered(QAction*)),
+                this, SLOT(sltChangeDragAndDropType(QAction*)));
+    }
+    /* Subsequent runs: */
+    else
+        foreach (QAction *pAction, m_pDragAndDropActions->actions())
+            if (pAction->data().value<KDragAndDropMode>() == session().GetMachine().GetDragAndDropMode())
+                pAction->setChecked(true);
+}
+
+void UIMachineLogic::sltChangeDragAndDropType(QAction *pAction)
+{
+    /* Assign new mode (without save): */
+    KDragAndDropMode mode = pAction->data().value<KDragAndDropMode>();
+    session().GetMachine().SetDragAndDropMode(mode);
+}
+
 void UIMachineLogic::sltSwitchVrde(bool fOn)
 {
Index: /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineLogic.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineLogic.h	(revision 43621)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineLogic.h	(revision 43622)
@@ -175,4 +175,6 @@
     void sltPrepareSharedClipboardMenu();
     void sltChangeSharedClipboardType(QAction *pAction);
+    void sltPrepareDragAndDropMenu();
+    void sltChangeDragAndDropType(QAction *pAction);
     void sltSwitchVrde(bool fOn);
     void sltInstallGuestAdditions();
@@ -209,4 +211,5 @@
     QActionGroup *m_pRunningOrPausedActions;
     QActionGroup *m_pSharedClipboardActions;
+    QActionGroup *m_pDragAndDropActions;
 
     bool m_fIsWindowsCreated : 1;
Index: /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineMenuBar.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineMenuBar.cpp	(revision 43621)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineMenuBar.cpp	(revision 43622)
@@ -241,4 +241,5 @@
     pMenu->addMenu(gActionPool->action(UIActionIndexRuntime_Menu_USBDevices)->menu());
     pMenu->addMenu(gActionPool->action(UIActionIndexRuntime_Menu_SharedClipboard)->menu());
+    pMenu->addMenu(gActionPool->action(UIActionIndexRuntime_Menu_DragAndDrop)->menu());
     pMenu->addAction(gActionPool->action(UIActionIndexRuntime_Simple_NetworkAdaptersDialog));
     pMenu->addAction(gActionPool->action(UIActionIndexRuntime_Simple_SharedFoldersDialog));
