Index: /trunk/src/VBox/Frontends/VirtualBox/src/converter/UIConverterBackendGlobal.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/converter/UIConverterBackendGlobal.cpp	(revision 84909)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/converter/UIConverterBackendGlobal.cpp	(revision 84910)
@@ -1415,4 +1415,5 @@
     switch (enmDetailsElementOptionTypeUserInterface)
     {
+        case UIExtraDataMetaDefs::DetailsElementOptionTypeUserInterface_VisualState: strResult = QApplication::translate("UICommon", "Visual State"); break;
         case UIExtraDataMetaDefs::DetailsElementOptionTypeUserInterface_MenuBar:     strResult = QApplication::translate("UICommon", "Menu Bar"); break;
         case UIExtraDataMetaDefs::DetailsElementOptionTypeUserInterface_StatusBar:   strResult = QApplication::translate("UICommon", "Status Bar"); break;
@@ -1433,4 +1434,5 @@
     switch (enmDetailsElementOptionTypeUserInterface)
     {
+        case UIExtraDataMetaDefs::DetailsElementOptionTypeUserInterface_VisualState: strResult = "VisualState"; break;
         case UIExtraDataMetaDefs::DetailsElementOptionTypeUserInterface_MenuBar:     strResult = "MenuBar"; break;
         case UIExtraDataMetaDefs::DetailsElementOptionTypeUserInterface_StatusBar:   strResult = "StatusBar"; break;
@@ -1451,4 +1453,5 @@
      * to search through the keys using 'case-insensitive' rule: */
     QStringList keys;      QList<UIExtraDataMetaDefs::DetailsElementOptionTypeUserInterface> values;
+    keys << "VisualState"; values << UIExtraDataMetaDefs::DetailsElementOptionTypeUserInterface_VisualState;
     keys << "MenuBar";     values << UIExtraDataMetaDefs::DetailsElementOptionTypeUserInterface_MenuBar;
     keys << "StatusBar";   values << UIExtraDataMetaDefs::DetailsElementOptionTypeUserInterface_StatusBar;
Index: /trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataDefs.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataDefs.h	(revision 84909)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataDefs.h	(revision 84910)
@@ -764,7 +764,8 @@
     {
         DetailsElementOptionTypeUserInterface_Invalid     = 0,
-        DetailsElementOptionTypeUserInterface_MenuBar     = RT_BIT(0),
-        DetailsElementOptionTypeUserInterface_StatusBar   = RT_BIT(1),
-        DetailsElementOptionTypeUserInterface_MiniToolbar = RT_BIT(2),
+        DetailsElementOptionTypeUserInterface_VisualState = RT_BIT(0),
+        DetailsElementOptionTypeUserInterface_MenuBar     = RT_BIT(1),
+        DetailsElementOptionTypeUserInterface_StatusBar   = RT_BIT(2),
+        DetailsElementOptionTypeUserInterface_MiniToolbar = RT_BIT(3),
         DetailsElementOptionTypeUserInterface_Default     = 0xFFFF
     };
Index: /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIDetailsGenerator.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIDetailsGenerator.cpp	(revision 84909)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIDetailsGenerator.cpp	(revision 84910)
@@ -959,4 +959,37 @@
     }
 
+    /* Visual state: */
+    if (fOptions & UIExtraDataMetaDefs::DetailsElementOptionTypeUserInterface_VisualState)
+    {
+        const QString strAnchorType = QString("visual_state");
+        const QString strEnabledFullscreen = comMachine.GetExtraData(UIExtraDataDefs::GUI_Fullscreen);
+        const QString strEnabledSeamless = comMachine.GetExtraData(UIExtraDataDefs::GUI_Seamless);
+        const QString strEnabledScale = comMachine.GetExtraData(UIExtraDataDefs::GUI_Scale);
+        UIVisualStateType enmType = UIVisualStateType_Normal;
+        if (   strEnabledFullscreen.compare("true", Qt::CaseInsensitive) == 0
+            || strEnabledFullscreen.compare("yes", Qt::CaseInsensitive) == 0
+            || strEnabledFullscreen.compare("on", Qt::CaseInsensitive) == 0
+            || strEnabledFullscreen == "1")
+            enmType = UIVisualStateType_Fullscreen;
+        else
+        if (   strEnabledSeamless.compare("true", Qt::CaseInsensitive) == 0
+            || strEnabledSeamless.compare("yes", Qt::CaseInsensitive) == 0
+            || strEnabledSeamless.compare("on", Qt::CaseInsensitive) == 0
+            || strEnabledSeamless == "1")
+            enmType = UIVisualStateType_Seamless;
+        else
+        if (   strEnabledScale.compare("true", Qt::CaseInsensitive) == 0
+            || strEnabledScale.compare("yes", Qt::CaseInsensitive) == 0
+            || strEnabledScale.compare("on", Qt::CaseInsensitive) == 0
+            || strEnabledScale == "1")
+            enmType = UIVisualStateType_Scale;
+        const QString strVisualState = gpConverter->toString(enmType);
+        table << UITextTableLine(QApplication::translate("UIDetails", "Visual State", "details (user interface)"),
+                                 QString("<a href=#%1,%2>%3</a>")
+                                     .arg(strAnchorType)
+                                     .arg(enmType)
+                                     .arg(strVisualState));
+    }
+
 #ifndef VBOX_WS_MAC
     /* Menu-bar: */
Index: /trunk/src/VBox/Frontends/VirtualBox/src/manager/details/UIDetailsElement.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/manager/details/UIDetailsElement.cpp	(revision 84909)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/manager/details/UIDetailsElement.cpp	(revision 84910)
@@ -51,4 +51,5 @@
 #include "UIVideoMemoryEditor.h"
 #include "UIVirtualBoxManager.h"
+#include "UIVisualStateEditor.h"
 
 
@@ -69,4 +70,5 @@
     AnchorRole_NetworkAttachmentType,
     AnchorRole_USBControllerType,
+    AnchorRole_VisualStateType,
 #ifndef VBOX_WS_MAC
     AnchorRole_MenuBar,
@@ -190,4 +192,5 @@
     m_pTextPane->setAnchorRoleRestricted("#network_attachment_type", enmCal == ConfigurationAccessLevel_Null);
     m_pTextPane->setAnchorRoleRestricted("#usb_controller_type", enmCal != ConfigurationAccessLevel_Full);
+    m_pTextPane->setAnchorRoleRestricted("#visual_state", enmCal == ConfigurationAccessLevel_Null);
 #ifndef VBOX_WS_MAC
     m_pTextPane->setAnchorRoleRestricted("#menu_bar", enmCal == ConfigurationAccessLevel_Null);
@@ -497,4 +500,5 @@
     roles["#network_attachment_type"] = AnchorRole_NetworkAttachmentType;
     roles["#usb_controller_type"] = AnchorRole_USBControllerType;
+    roles["#visual_state"] = AnchorRole_VisualStateType;
 #ifndef VBOX_WS_MAC
     roles["#menu_bar"] = AnchorRole_MenuBar;
@@ -877,4 +881,37 @@
                 if (controllerSets.key(controllerSet) != iTriggeredIndex)
                     setMachineAttribute(machine(), MachineAttribute_USBControllerType, QVariant::fromValue(controllerSets.value(iTriggeredIndex)));
+            }
+            break;
+        }
+        case AnchorRole_VisualStateType:
+        {
+            /* Prepare popup: */
+            QPointer<QIDialogContainer> pPopup = new QIDialogContainer(0, Qt::Tool);
+            if (pPopup)
+            {
+                /* Prepare editor: */
+                UIVisualStateEditor *pEditor = new UIVisualStateEditor(pPopup, true /* with label */);
+                if (pEditor)
+                {
+                    pEditor->setMachineId(machine().GetId());
+                    pEditor->setValue(static_cast<UIVisualStateType>(strData.section(',', 0, 0).toInt()));
+                    pPopup->setWidget(pEditor);
+                }
+
+                /* Adjust popup geometry: */
+                pPopup->move(QCursor::pos());
+                pPopup->adjustSize();
+
+                // WORKAROUND:
+                // On Windows, Tool dialogs aren't activated by default by some reason.
+                // So we have created sltActivateWindow wrapping actual activateWindow
+                // to fix that annoying issue.
+                QMetaObject::invokeMethod(pPopup, "sltActivateWindow", Qt::QueuedConnection);
+                /* Execute popup, change machine name if confirmed: */
+                if (pPopup->exec() == QDialog::Accepted)
+                    gEDataManager->setRequestedVisualState(pEditor->value(), machine().GetId());
+
+                /* Delete popup: */
+                delete pPopup;
             }
             break;
