Index: /trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataManager.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataManager.cpp	(revision 51662)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataManager.cpp	(revision 51663)
@@ -833,9 +833,4 @@
 }
 
-MachineCloseAction UIExtraDataManager::defaultMachineCloseAction(const QString &strID) const
-{
-    return gpConverter->fromInternalString<MachineCloseAction>(extraDataString(GUI_DefaultCloseAction, strID));
-}
-
 int UIExtraDataManager::hostScreenForPassedGuestScreen(int iGuestScreenIndex, const QString &strID)
 {
@@ -861,4 +856,134 @@
 }
 
+QList<IndicatorType> UIExtraDataManager::restrictedStatusBarIndicators(const QString &strID) const
+{
+    /* Prepare result: */
+    QList<IndicatorType> result;
+    /* Load restricted status-bar-indicators: */
+    foreach (const QString &strValue, extraDataStringList(GUI_RestrictedStatusBarIndicators, strID))
+    {
+        IndicatorType value = gpConverter->fromInternalString<IndicatorType>(strValue);
+        if (value != IndicatorType_Invalid)
+            result << value;
+    }
+    /* Return result: */
+    return result;
+}
+
+QList<GlobalSettingsPageType> UIExtraDataManager::restrictedGlobalSettingsPages() const
+{
+    /* Prepare result: */
+    QList<GlobalSettingsPageType> result;
+    /* Load restricted global-settings-pages: */
+    foreach (const QString &strValue, extraDataStringList(GUI_RestrictedGlobalSettingsPages))
+    {
+        GlobalSettingsPageType value = gpConverter->fromInternalString<GlobalSettingsPageType>(strValue);
+        if (value != GlobalSettingsPageType_Invalid)
+            result << value;
+    }
+    /* Return result: */
+    return result;
+}
+
+QList<MachineSettingsPageType> UIExtraDataManager::restrictedMachineSettingsPages(const QString &strID) const
+{
+    /* Prepare result: */
+    QList<MachineSettingsPageType> result;
+    /* Load restricted machine-settings-pages: */
+    foreach (const QString &strValue, extraDataStringList(GUI_RestrictedMachineSettingsPages, strID))
+    {
+        MachineSettingsPageType value = gpConverter->fromInternalString<MachineSettingsPageType>(strValue);
+        if (value != MachineSettingsPageType_Invalid)
+            result << value;
+    }
+    /* Return result: */
+    return result;
+}
+
+#ifndef Q_WS_MAC
+QStringList UIExtraDataManager::machineWindowIconNames(const QString &strID) const
+{
+    return extraDataStringList(GUI_MachineWindowIcons, strID);
+}
+
+QString UIExtraDataManager::machineWindowNamePostfix(const QString &strID) const
+{
+    return extraDataString(GUI_MachineWindowNamePostfix, strID);
+}
+#endif /* !Q_WS_MAC */
+
+GuruMeditationHandlerType UIExtraDataManager::guruMeditationHandlerType(const QString &strID) const
+{
+    return gpConverter->fromInternalString<GuruMeditationHandlerType>(extraDataString(GUI_GuruMeditationHandler, strID));
+}
+
+HiDPIOptimizationType UIExtraDataManager::hiDPIOptimizationType(const QString &strID) const
+{
+    return gpConverter->fromInternalString<HiDPIOptimizationType>(extraDataString(GUI_HiDPI_Optimization, strID));
+}
+
+bool UIExtraDataManager::passCADtoGuest(const QString &strID) const
+{
+    /* 'False' unless feature allowed: */
+    return isFeatureAllowed(GUI_PassCAD, strID);
+}
+
+bool UIExtraDataManager::hidLedsSyncState(const QString &strID) const
+{
+    /* 'True' unless feature restricted: */
+    return !isFeatureRestricted(GUI_HidLedsSync, strID);
+}
+
+bool UIExtraDataManager::showMiniToolbar(const QString &strID) const
+{
+    /* 'True' unless feature restricted: */
+    return !isFeatureRestricted(GUI_ShowMiniToolBar, strID);
+}
+
+void UIExtraDataManager::setShowMiniToolbar(bool fShown, const QString &strID)
+{
+    /* 'False' if feature restricted, null-string otherwise: */
+    setExtraDataString(GUI_ShowMiniToolBar, toFeatureRestricted(!fShown), strID);
+}
+
+bool UIExtraDataManager::autoHideMiniToolbar(const QString &strID) const
+{
+    /* 'True' unless feature restricted: */
+    return !isFeatureRestricted(GUI_MiniToolBarAutoHide, strID);
+}
+
+void UIExtraDataManager::setAutoHideMiniToolbar(bool fAutoHide, const QString &strID)
+{
+    /* 'False' if feature restricted, null-string otherwise: */
+    setExtraDataString(GUI_MiniToolBarAutoHide, toFeatureRestricted(!fAutoHide), strID);
+}
+
+Qt::AlignmentFlag UIExtraDataManager::miniToolbarAlignment(const QString &strID) const
+{
+    /* Return Qt::AlignBottom unless MiniToolbarAlignment_Top specified separately: */
+    switch (gpConverter->fromInternalString<MiniToolbarAlignment>(extraDataString(GUI_MiniToolBarAlignment, strID)))
+    {
+        case MiniToolbarAlignment_Top: return Qt::AlignTop;
+        default: break;
+    }
+    return Qt::AlignBottom;
+}
+
+void UIExtraDataManager::setMiniToolbarAlignment(Qt::AlignmentFlag alignment, const QString &strID)
+{
+    /* Remove record unless Qt::AlignTop specified separately: */
+    switch (alignment)
+    {
+        case Qt::AlignTop: setExtraDataString(GUI_MiniToolBarAlignment, gpConverter->toInternalString(MiniToolbarAlignment_Top), strID); return;
+        default: break;
+    }
+    setExtraDataString(GUI_MiniToolBarAlignment, QString(), strID);
+}
+
+MachineCloseAction UIExtraDataManager::defaultMachineCloseAction(const QString &strID) const
+{
+    return gpConverter->fromInternalString<MachineCloseAction>(extraDataString(GUI_DefaultCloseAction, strID));
+}
+
 MachineCloseAction UIExtraDataManager::restrictedMachineCloseActions(const QString &strID) const
 {
@@ -876,127 +1001,12 @@
 }
 
-QList<IndicatorType> UIExtraDataManager::restrictedStatusBarIndicators(const QString &strID) const
-{
-    /* Prepare result: */
-    QList<IndicatorType> result;
-    /* Load restricted status-bar-indicators: */
-    foreach (const QString &strValue, extraDataStringList(GUI_RestrictedStatusBarIndicators, strID))
-    {
-        IndicatorType value = gpConverter->fromInternalString<IndicatorType>(strValue);
-        if (value != IndicatorType_Invalid)
-            result << value;
-    }
-    /* Return result: */
-    return result;
-}
-
-QList<GlobalSettingsPageType> UIExtraDataManager::restrictedGlobalSettingsPages() const
-{
-    /* Prepare result: */
-    QList<GlobalSettingsPageType> result;
-    /* Load restricted global-settings-pages: */
-    foreach (const QString &strValue, extraDataStringList(GUI_RestrictedGlobalSettingsPages))
-    {
-        GlobalSettingsPageType value = gpConverter->fromInternalString<GlobalSettingsPageType>(strValue);
-        if (value != GlobalSettingsPageType_Invalid)
-            result << value;
-    }
-    /* Return result: */
-    return result;
-}
-
-QList<MachineSettingsPageType> UIExtraDataManager::restrictedMachineSettingsPages(const QString &strID) const
-{
-    /* Prepare result: */
-    QList<MachineSettingsPageType> result;
-    /* Load restricted machine-settings-pages: */
-    foreach (const QString &strValue, extraDataStringList(GUI_RestrictedMachineSettingsPages, strID))
-    {
-        MachineSettingsPageType value = gpConverter->fromInternalString<MachineSettingsPageType>(strValue);
-        if (value != MachineSettingsPageType_Invalid)
-            result << value;
-    }
-    /* Return result: */
-    return result;
-}
-
-#ifndef Q_WS_MAC
-QStringList UIExtraDataManager::machineWindowIconNames(const QString &strID) const
-{
-    return extraDataStringList(GUI_MachineWindowIcons, strID);
-}
-
-QString UIExtraDataManager::machineWindowNamePostfix(const QString &strID) const
-{
-    return extraDataString(GUI_MachineWindowNamePostfix, strID);
-}
-#endif /* !Q_WS_MAC */
-
-GuruMeditationHandlerType UIExtraDataManager::guruMeditationHandlerType(const QString &strID) const
-{
-    return gpConverter->fromInternalString<GuruMeditationHandlerType>(extraDataString(GUI_GuruMeditationHandler, strID));
-}
-
-HiDPIOptimizationType UIExtraDataManager::hiDPIOptimizationType(const QString &strID) const
-{
-    return gpConverter->fromInternalString<HiDPIOptimizationType>(extraDataString(GUI_HiDPI_Optimization, strID));
-}
-
-bool UIExtraDataManager::passCADtoGuest(const QString &strID) const
-{
-    /* 'False' unless feature allowed: */
-    return isFeatureAllowed(GUI_PassCAD, strID);
-}
-
-bool UIExtraDataManager::hidLedsSyncState(const QString &strID) const
-{
-    /* 'True' unless feature restricted: */
-    return !isFeatureRestricted(GUI_HidLedsSync, strID);
-}
-
-bool UIExtraDataManager::showMiniToolbar(const QString &strID) const
-{
-    /* 'True' unless feature restricted: */
-    return !isFeatureRestricted(GUI_ShowMiniToolBar, strID);
-}
-
-void UIExtraDataManager::setShowMiniToolbar(bool fShown, const QString &strID)
-{
-    /* 'False' if feature restricted, null-string otherwise: */
-    setExtraDataString(GUI_ShowMiniToolBar, toFeatureRestricted(!fShown), strID);
-}
-
-bool UIExtraDataManager::autoHideMiniToolbar(const QString &strID) const
-{
-    /* 'True' unless feature restricted: */
-    return !isFeatureRestricted(GUI_MiniToolBarAutoHide, strID);
-}
-
-void UIExtraDataManager::setAutoHideMiniToolbar(bool fAutoHide, const QString &strID)
-{
-    /* 'False' if feature restricted, null-string otherwise: */
-    setExtraDataString(GUI_MiniToolBarAutoHide, toFeatureRestricted(!fAutoHide), strID);
-}
-
-Qt::AlignmentFlag UIExtraDataManager::miniToolbarAlignment(const QString &strID) const
-{
-    /* Return Qt::AlignBottom unless MiniToolbarAlignment_Top specified separately: */
-    switch (gpConverter->fromInternalString<MiniToolbarAlignment>(extraDataString(GUI_MiniToolBarAlignment, strID)))
-    {
-        case MiniToolbarAlignment_Top: return Qt::AlignTop;
-        default: break;
-    }
-    return Qt::AlignBottom;
-}
-
-void UIExtraDataManager::setMiniToolbarAlignment(Qt::AlignmentFlag alignment, const QString &strID)
-{
-    /* Remove record unless Qt::AlignTop specified separately: */
-    switch (alignment)
-    {
-        case Qt::AlignTop: setExtraDataString(GUI_MiniToolBarAlignment, gpConverter->toInternalString(MiniToolbarAlignment_Top), strID); return;
-        default: break;
-    }
-    setExtraDataString(GUI_MiniToolBarAlignment, QString(), strID);
+MachineCloseAction UIExtraDataManager::lastMachineCloseAction(const QString &strID) const
+{
+    return gpConverter->fromInternalString<MachineCloseAction>(extraDataString(GUI_LastCloseAction, strID));
+}
+
+void UIExtraDataManager::setLastMachineCloseAction(MachineCloseAction machineCloseAction, const QString &strID)
+{
+    setExtraDataString(GUI_LastCloseAction, gpConverter->toInternalString(machineCloseAction), strID);
 }
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataManager.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataManager.h	(revision 51662)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataManager.h	(revision 51663)
@@ -245,9 +245,4 @@
     void setGuestScreenAutoResize(bool fEnabled, const QString &strID);
 
-    /** Returns default machine close action. */
-    MachineCloseAction defaultMachineCloseAction(const QString &strID) const;
-    /** Returns restricted machine close actions. */
-    MachineCloseAction restrictedMachineCloseActions(const QString &strID) const;
-
     /** Returns restricted Runtime UI status-bar indicators. */
     QList<IndicatorType> restrictedStatusBarIndicators(const QString &strID) const;
@@ -291,4 +286,14 @@
     /** Returns mini-toolbar @a alignment. */
     void setMiniToolbarAlignment(Qt::AlignmentFlag alignment, const QString &strID);
+
+    /** Returns default machine close action. */
+    MachineCloseAction defaultMachineCloseAction(const QString &strID) const;
+    /** Returns restricted machine close actions. */
+    MachineCloseAction restrictedMachineCloseActions(const QString &strID) const;
+
+    /** Returns last machine close action. */
+    MachineCloseAction lastMachineCloseAction(const QString &strID) const;
+    /** Defines last @a machineCloseAction. */
+    void setLastMachineCloseAction(MachineCloseAction machineCloseAction, const QString &strID);
 
 private slots:
Index: /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIVMCloseDialog.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIVMCloseDialog.cpp	(revision 51662)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIVMCloseDialog.cpp	(revision 51663)
@@ -33,8 +33,9 @@
 /* GUI includes: */
 # include "UIVMCloseDialog.h"
+# include "UIExtraDataManager.h"
 # include "UIMessageCenter.h"
+# include "UIConverter.h"
 # include "VBoxGlobal.h"
 # include "QIDialogButtonBox.h"
-# include "UIConverter.h"
 
 /* COM includes: */
@@ -92,5 +93,5 @@
         m_lastCloseAction == MachineCloseAction_Shutdown && !m_fIsACPIEnabled)
         newCloseAction = MachineCloseAction_Shutdown;
-    m_machine.SetExtraData(GUI_LastCloseAction, gpConverter->toInternalString(newCloseAction));
+    gEDataManager->setLastMachineCloseAction(newCloseAction, vboxGlobal().managedVMUuid());
 
     /* Hide the dialog: */
@@ -309,5 +310,5 @@
     QRadioButton *pRadioButtonToChoose = 0;
     /* If choosing 'last choice' is possible: */
-    m_lastCloseAction = gpConverter->fromInternalString<MachineCloseAction>(m_machine.GetExtraData(GUI_LastCloseAction));
+    m_lastCloseAction = gEDataManager->lastMachineCloseAction(vboxGlobal().managedVMUuid());
     if (m_lastCloseAction == MachineCloseAction_SaveState && fIsStateSavingAllowed)
     {
