Index: /trunk/src/VBox/Frontends/VirtualBox/Makefile.kmk
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/Makefile.kmk	(revision 39778)
+++ /trunk/src/VBox/Frontends/VirtualBox/Makefile.kmk	(revision 39779)
@@ -317,4 +317,5 @@
 	src/settings/global/UIGlobalSettingsInput.h \
 	src/settings/global/UIGlobalSettingsLanguage.h \
+	src/settings/global/UIGlobalSettingsDisplay.h \
 	src/settings/global/UIGlobalSettingsNetwork.h \
 	src/settings/global/UIGlobalSettingsNetworkDetails.h \
@@ -493,4 +494,5 @@
 	src/settings/global/UIGlobalSettingsInput.cpp \
 	src/settings/global/UIGlobalSettingsLanguage.cpp \
+	src/settings/global/UIGlobalSettingsDisplay.cpp \
 	src/settings/global/UIGlobalSettingsNetwork.cpp \
 	src/settings/global/UIGlobalSettingsNetworkDetails.cpp \
Index: /trunk/src/VBox/Frontends/VirtualBox/VBoxUI.pro
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/VBoxUI.pro	(revision 39778)
+++ /trunk/src/VBox/Frontends/VirtualBox/VBoxUI.pro	(revision 39779)
@@ -32,4 +32,5 @@
     src/settings/global/UIGlobalSettingsUpdate.ui \
     src/settings/global/UIGlobalSettingsLanguage.ui \
+    src/settings/global/UIGlobalSettingsDisplay.ui \
     src/settings/global/UIGlobalSettingsNetwork.ui \
     src/settings/global/UIGlobalSettingsNetworkDetails.ui \
Index: /trunk/src/VBox/Frontends/VirtualBox/src/settings/UISettingsDialogSpecific.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/settings/UISettingsDialogSpecific.cpp	(revision 39778)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/settings/UISettingsDialogSpecific.cpp	(revision 39779)
@@ -38,4 +38,5 @@
 #include "UIGlobalSettingsUpdate.h"
 #include "UIGlobalSettingsLanguage.h"
+#include "UIGlobalSettingsDisplay.h"
 #include "UIGlobalSettingsNetwork.h"
 #include "UIGlobalSettingsExtension.h"
@@ -359,4 +360,13 @@
                     break;
                 }
+                /* Display page: */
+                case GLSettingsPage_Display:
+                {
+                    pSettingsPage = new UIGlobalSettingsDisplay;
+                    addItem(":/vrdp_32px.png", ":/vrdp_disabled_32px.png",
+                            ":/vrdp_16px.png", ":/vrdp_disabled_16px.png",
+                            iPageIndex, "#display", pSettingsPage);
+                    break;
+                }
                 /* USB page: */
                 case GLSettingsPage_USB:
@@ -481,4 +491,7 @@
     /* Language page: */
     m_pSelector->setItemText(GLSettingsPage_Language, tr("Language"));
+
+    /* Display page: */
+    m_pSelector->setItemText(GLSettingsPage_Display, tr("Display"));
 
     /* USB page: */
Index: /trunk/src/VBox/Frontends/VirtualBox/src/settings/UISettingsDialogSpecific.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/settings/UISettingsDialogSpecific.h	(revision 39778)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/settings/UISettingsDialogSpecific.h	(revision 39779)
@@ -37,4 +37,5 @@
         GLSettingsPage_Update,
         GLSettingsPage_Language,
+        GLSettingsPage_Display,
         GLSettingsPage_USB,
         GLSettingsPage_Network,
Index: /trunk/src/VBox/Frontends/VirtualBox/src/settings/global/UIGlobalSettingsDisplay.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/settings/global/UIGlobalSettingsDisplay.cpp	(revision 39779)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/settings/global/UIGlobalSettingsDisplay.cpp	(revision 39779)
@@ -0,0 +1,190 @@
+/* $Id$ */
+/** @file
+ *
+ * VBox frontends: Qt4 GUI ("VirtualBox"):
+ * UIGlobalSettingsDisplay class implementation
+ */
+
+/*
+ * Copyright (C) 2012 Oracle Corporation
+ *
+ * This file is part of VirtualBox Open Source Edition (OSE), as
+ * available from http://www.virtualbox.org. This file is free software;
+ * you can redistribute it and/or modify it under the terms of the GNU
+ * General Public License (GPL) as published by the Free Software
+ * Foundation, in version 2 as it comes in the "COPYING" file of the
+ * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ */
+
+/* Local includes: */
+#include "UIGlobalSettingsDisplay.h"
+
+/* Display page constructor: */
+UIGlobalSettingsDisplay::UIGlobalSettingsDisplay()
+{
+    /* Apply UI decorations: */
+    Ui::UIGlobalSettingsDisplay::setupUi(this);
+
+    /* Setup widgets: */
+    int iMinWidth = 640;
+    int iMinHeight = 480;
+    int iMaxSize = 16 * _1K;
+    m_pResolutionWidthSpin->setMinimum(iMinWidth);
+    m_pResolutionHeightSpin->setMinimum(iMinHeight);
+    m_pResolutionWidthSpin->setMaximum(iMaxSize);
+    m_pResolutionHeightSpin->setMaximum(iMaxSize);
+
+    /* Setup connections: */
+    connect(m_pMaxResolutionCombo, SIGNAL(currentIndexChanged(int)), this, SLOT(sltMaxResolutionComboActivated()));
+
+    /* Apply language settings: */
+    retranslateUi();
+}
+
+/* Load data to cashe from corresponding external object(s),
+ * this task COULD be performed in other than GUI thread: */
+void UIGlobalSettingsDisplay::loadToCacheFrom(QVariant &data)
+{
+    /* Fetch data to properties & settings: */
+    UISettingsPageGlobal::fetchData(data);
+
+    /* Load to cache: */
+    m_cache.m_strMaxGuestResolution = m_settings.maxGuestRes();
+
+    /* Upload properties & settings to data: */
+    UISettingsPageGlobal::uploadData(data);
+}
+
+/* Load data to corresponding widgets from cache,
+ * this task SHOULD be performed in GUI thread only: */
+void UIGlobalSettingsDisplay::getFromCache()
+{
+    /* Fetch from cache: */
+    if ((m_cache.m_strMaxGuestResolution.isEmpty()) ||
+        (m_cache.m_strMaxGuestResolution == "auto"))
+    {
+        /* Switch combo-box item: */
+        m_pMaxResolutionCombo->setCurrentIndex(m_pMaxResolutionCombo->findData("auto"));
+    }
+    else if (m_cache.m_strMaxGuestResolution == "any")
+    {
+        /* Switch combo-box item: */
+        m_pMaxResolutionCombo->setCurrentIndex(m_pMaxResolutionCombo->findData("any"));
+    }
+    else
+    {
+        /* Switch combo-box item: */
+        m_pMaxResolutionCombo->setCurrentIndex(m_pMaxResolutionCombo->findData("fixed"));
+        /* Trying to parse text into 2 sections by ',' symbol: */
+        int iWidth  = m_cache.m_strMaxGuestResolution.section(',', 0, 0).toInt();
+        int iHeight = m_cache.m_strMaxGuestResolution.section(',', 1, 1).toInt();
+        /* And set values if they are present: */
+        m_pResolutionWidthSpin->setValue(iWidth);
+        m_pResolutionHeightSpin->setValue(iHeight);
+    }
+}
+
+/* Save data from corresponding widgets to cache,
+ * this task SHOULD be performed in GUI thread only: */
+void UIGlobalSettingsDisplay::putToCache()
+{
+    /* Upload to cache: */
+    if (m_pMaxResolutionCombo->itemData(m_pMaxResolutionCombo->currentIndex()).toString() == "auto")
+    {
+        /* If resolution current combo item is "auto" => resolution set to "auto": */
+        m_cache.m_strMaxGuestResolution = QString();
+    }
+    else if (m_pMaxResolutionCombo->itemData(m_pMaxResolutionCombo->currentIndex()).toString() == "any" ||
+             m_pResolutionWidthSpin->value() == 0 || m_pResolutionHeightSpin->value() == 0)
+    {
+        /* Else if resolution current combo item is "any"
+         * or any of the resolution field attributes is zero => resolution set to "any": */
+        m_cache.m_strMaxGuestResolution = "any";
+    }
+    else if (m_pResolutionWidthSpin->value() != 0 && m_pResolutionHeightSpin->value() != 0)
+    {
+        /* Else if both field attributes are non-zeroes => resolution set to "fixed": */
+        m_cache.m_strMaxGuestResolution = QString("%1,%2").arg(m_pResolutionWidthSpin->value()).arg(m_pResolutionHeightSpin->value());
+    }
+}
+
+/* Save data from cache to corresponding external object(s),
+ * this task COULD be performed in other than GUI thread: */
+void UIGlobalSettingsDisplay::saveFromCacheTo(QVariant &data)
+{
+    /* Fetch data to properties & settings: */
+    UISettingsPageGlobal::fetchData(data);
+
+    /* Save from cache: */
+    m_settings.setMaxGuestRes(m_cache.m_strMaxGuestResolution);
+
+    /* Upload properties & settings to data: */
+    UISettingsPageGlobal::uploadData(data);
+}
+
+/* Navigation stuff: */
+void UIGlobalSettingsDisplay::setOrderAfter(QWidget* /* pWidget */)
+{
+}
+
+/* Translation stuff: */
+void UIGlobalSettingsDisplay::retranslateUi()
+{
+    /* Translate uic generated strings: */
+    Ui::UIGlobalSettingsDisplay::retranslateUi(this);
+
+    /* Populate combo-box: */
+    populate();
+}
+
+void UIGlobalSettingsDisplay::sltMaxResolutionComboActivated()
+{
+    /* Get current resolution-combo tool-tip data: */
+    QString strCurrentComboItemTip = m_pMaxResolutionCombo->itemData(m_pMaxResolutionCombo->currentIndex(), Qt::ToolTipRole).toString();
+    m_pMaxResolutionCombo->setWhatsThis(strCurrentComboItemTip);
+
+    /* Get current resolution-combo item data: */
+    QString strCurrentComboItemData = m_pMaxResolutionCombo->itemData(m_pMaxResolutionCombo->currentIndex()).toString();
+    /* Is our combo in state for 'fixed' resolution? */
+    bool fCurrentResolutionStateFixed = strCurrentComboItemData == "fixed";
+    /* Should be combo-level widgets enabled? */
+    bool fComboLevelWidgetsEnabled = fCurrentResolutionStateFixed;
+    /* Enable/disable combo-level widgets: */
+    m_pResolutionWidthLabel->setEnabled(fComboLevelWidgetsEnabled);
+    m_pResolutionWidthSpin->setEnabled(fComboLevelWidgetsEnabled);
+    m_pResolutionHeightLabel->setEnabled(fComboLevelWidgetsEnabled);
+    m_pResolutionHeightSpin->setEnabled(fComboLevelWidgetsEnabled);
+}
+
+void UIGlobalSettingsDisplay::populate()
+{
+    /* Remember current position: */
+    int iCurrentPosition = m_pMaxResolutionCombo->currentIndex();
+    if (iCurrentPosition == -1)
+        iCurrentPosition = 0;
+
+    /* Clear combo-box: */
+    m_pMaxResolutionCombo->clear();
+
+    /* Create corresponding items: */
+    m_pMaxResolutionCombo->addItem(tr("Automatic", "Maximum Guest Screen Size"), "auto");
+    m_pMaxResolutionCombo->setItemData(m_pMaxResolutionCombo->count() - 1,
+                                       tr("Suggest a reasonable maximum screen size to the guest. "
+                                          "The guest will only see this suggestion when guest additions are installed."),
+                                       Qt::ToolTipRole);
+    m_pMaxResolutionCombo->addItem(tr("None", "Maximum Guest Screen Size"), "any");
+    m_pMaxResolutionCombo->setItemData(m_pMaxResolutionCombo->count() - 1,
+                                       tr("Do not attempt to limit the size of the guest screen."),
+                                       Qt::ToolTipRole);
+    m_pMaxResolutionCombo->addItem(tr("Hint", "Maximum Guest Screen Size"), "fixed");
+    m_pMaxResolutionCombo->setItemData(m_pMaxResolutionCombo->count() - 1,
+                                       tr("Suggest a maximum screen size to the guest. "
+                                          "The guest will only see this suggestion when guest additions are installed."),
+                                       Qt::ToolTipRole);
+
+    /* Choose previous position: */
+    m_pMaxResolutionCombo->setCurrentIndex(iCurrentPosition);
+    sltMaxResolutionComboActivated();
+}
+
Index: /trunk/src/VBox/Frontends/VirtualBox/src/settings/global/UIGlobalSettingsDisplay.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/settings/global/UIGlobalSettingsDisplay.h	(revision 39779)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/settings/global/UIGlobalSettingsDisplay.h	(revision 39779)
@@ -0,0 +1,79 @@
+/** @file
+ *
+ * VBox frontends: Qt4 GUI ("VirtualBox"):
+ * UIGlobalSettingsDisplay class declaration
+ */
+
+/*
+ * Copyright (C) 2012 Oracle Corporation
+ *
+ * This file is part of VirtualBox Open Source Edition (OSE), as
+ * available from http://www.virtualbox.org. This file is free software;
+ * you can redistribute it and/or modify it under the terms of the GNU
+ * General Public License (GPL) as published by the Free Software
+ * Foundation, in version 2 as it comes in the "COPYING" file of the
+ * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ */
+
+#ifndef __UIGlobalSettingsDisplay_h__
+#define __UIGlobalSettingsDisplay_h__
+
+/* Local includes: */
+#include "UISettingsPage.h"
+#include "UIGlobalSettingsDisplay.gen.h"
+
+/* Global settings / Display page / Cache: */
+struct UISettingsCacheGlobalDisplay
+{
+    QString m_strMaxGuestResolution;
+};
+
+/* Global settings / Display page: */
+class UIGlobalSettingsDisplay : public UISettingsPageGlobal, public Ui::UIGlobalSettingsDisplay
+{
+    Q_OBJECT;
+
+public:
+
+    /* Constructor: */
+    UIGlobalSettingsDisplay();
+
+protected:
+
+    /* Load data to cashe from corresponding external object(s),
+     * this task COULD be performed in other than GUI thread: */
+    void loadToCacheFrom(QVariant &data);
+    /* Load data to corresponding widgets from cache,
+     * this task SHOULD be performed in GUI thread only: */
+    void getFromCache();
+
+    /* Save data from corresponding widgets to cache,
+     * this task SHOULD be performed in GUI thread only: */
+    void putToCache();
+    /* Save data from cache to corresponding external object(s),
+     * this task COULD be performed in other than GUI thread: */
+    void saveFromCacheTo(QVariant &data);
+
+    /* Navigation stuff: */
+    void setOrderAfter(QWidget *pWidget);
+
+    /* Translation stuff: */
+    void retranslateUi();
+
+protected slots:
+
+    /* Max resolution combo activation handler: */
+    void sltMaxResolutionComboActivated();
+
+private:
+
+    /* Populate combo-box: */
+    void populate();
+
+    /* Cache: */
+    UISettingsCacheGlobalDisplay m_cache;
+};
+
+#endif // __UIGlobalSettingsDisplay_h__
+
Index: /trunk/src/VBox/Frontends/VirtualBox/src/settings/global/UIGlobalSettingsDisplay.ui
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/settings/global/UIGlobalSettingsDisplay.ui	(revision 39779)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/settings/global/UIGlobalSettingsDisplay.ui	(revision 39779)
@@ -0,0 +1,155 @@
+<ui version="4.0">
+ <comment>
+ VBox frontends: Qt4 GUI ("VirtualBox"):
+
+     Copyright (C) 2012 Oracle Corporation
+
+     This file is part of VirtualBox Open Source Edition (OSE), as
+     available from http://www.virtualbox.org. This file is free software;
+     you can redistribute it and/or modify it under the terms of the GNU
+     General Public License (GPL) as published by the Free Software
+     Foundation, in version 2 as it comes in the "COPYING" file of the
+     VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+     hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ </comment>
+ <class>UIGlobalSettingsDisplay</class>
+ <widget class="QWidget" name="UIGlobalSettingsDisplay">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>350</width>
+    <height>250</height>
+   </rect>
+  </property>
+  <layout class="QGridLayout">
+   <property name="margin">
+    <number>0</number>
+   </property>
+   <item row="0" column="0">
+    <spacer>
+     <property name="orientation">
+      <enum>Qt::Horizontal</enum>
+     </property>
+     <property name="sizeType">
+      <enum>QSizePolicy::Fixed</enum>
+     </property>
+     <property name="sizeHint">
+      <size>
+       <width>40</width>
+       <height>20</height>
+      </size>
+     </property>
+    </spacer>
+   </item>
+   <item row="0" column="1">
+    <widget class="QLabel" name="m_pMaxResolutionLabel">
+     <property name="sizePolicy">
+      <sizepolicy vsizetype="Minimum" hsizetype="Minimum">
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="text">
+      <string>Maximum Guest Screen &amp;Size:</string>
+     </property>
+     <property name="alignment">
+      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+     </property>
+     <property name="buddy">
+      <cstring>m_pMaxResolutionCombo</cstring>
+     </property>
+    </widget>
+   </item>
+   <item row="0" column="2">
+    <widget class="QComboBox" name="m_pMaxResolutionCombo">
+     <property name="sizePolicy">
+      <sizepolicy vsizetype="Minimum" hsizetype="MinimumExpanding">
+       <horstretch>1</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+    </widget>
+   </item>
+   <item row="1" column="1">
+    <widget class="QLabel" name="m_pResolutionWidthLabel">
+     <property name="sizePolicy">
+      <sizepolicy vsizetype="Minimum" hsizetype="Minimum">
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="text">
+      <string>&amp;Width:</string>
+     </property>
+     <property name="alignment">
+      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+     </property>
+     <property name="buddy">
+      <cstring>m_pResolutionWidthSpin</cstring>
+     </property>
+    </widget>
+   </item>
+   <item row="1" column="2">
+    <widget class="QSpinBox" name="m_pResolutionWidthSpin">
+     <property name="sizePolicy">
+      <sizepolicy vsizetype="Minimum" hsizetype="MinimumExpanding">
+       <horstretch>1</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="whatsThis">
+      <string>Specifies the maximum width which we would like the guest to use.</string>
+     </property>
+    </widget>
+   </item>
+   <item row="2" column="1">
+    <widget class="QLabel" name="m_pResolutionHeightLabel">
+     <property name="sizePolicy">
+      <sizepolicy vsizetype="Minimum" hsizetype="Minimum">
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="text">
+      <string>&amp;Height:</string>
+     </property>
+     <property name="alignment">
+      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+     </property>
+     <property name="buddy">
+      <cstring>m_pResolutionHeightSpin</cstring>
+     </property>
+    </widget>
+   </item>
+   <item row="2" column="2">
+    <widget class="QSpinBox" name="m_pResolutionHeightSpin">
+     <property name="sizePolicy">
+      <sizepolicy vsizetype="Minimum" hsizetype="MinimumExpanding">
+       <horstretch>1</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="whatsThis">
+      <string>Specifies the maximum height which we would like the guest to use.</string>
+     </property>
+    </widget>
+   </item>
+   <item row="3" column="1" colspan="2">
+    <spacer>
+     <property name="orientation">
+      <enum>Qt::Vertical</enum>
+     </property>
+     <property name="sizeHint">
+      <size>
+       <width>0</width>
+       <height>0</height>
+      </size>
+     </property>
+    </spacer>
+   </item>
+  </layout>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
