Index: trunk/src/VBox/Frontends/VirtualBox/src/settings/UISettingsDialog.cpp
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/settings/UISettingsDialog.cpp	(revision 47572)
+++ trunk/src/VBox/Frontends/VirtualBox/src/settings/UISettingsDialog.cpp	(revision 47573)
@@ -337,5 +337,5 @@
     QString strPageTitle = m_pSelector->itemTextByPage(pSettingsPage);
     QString strMessageText;
-    bool fIsValid = pSettingsPage->revalidate(strMessageText, strPageTitle);
+    bool fIsValid = pSettingsPage->validate(strMessageText, strPageTitle);
 
     /* Remember revalidation result: */
Index: trunk/src/VBox/Frontends/VirtualBox/src/settings/UISettingsPage.cpp
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/settings/UISettingsPage.cpp	(revision 47572)
+++ trunk/src/VBox/Frontends/VirtualBox/src/settings/UISettingsPage.cpp	(revision 47573)
@@ -18,6 +18,7 @@
  */
 
-/* Local includes */
+/* GUI includes: */
 #include "UISettingsPage.h"
+#include "QIWidgetValidator.h"
 
 /* Settings page constructor, hidden: */
@@ -29,5 +30,24 @@
     , m_fFailed(false)
     , m_pFirstWidget(0)
+    , m_pValidator(0)
 {
+}
+
+void UISettingsPage::setValidator(UIPageValidator *pValidator)
+{
+    /* Make sure validator is not yet assigned: */
+    AssertMsg(!m_pValidator, ("Validator already assigned!\n"));
+    if (m_pValidator)
+        return;
+
+    /* Assign validator: */
+    m_pValidator = pValidator;
+}
+
+void UISettingsPage::revalidate()
+{
+    /* Revalidate if possible: */
+    if (m_pValidator)
+        m_pValidator->revalidate();
 }
 
Index: trunk/src/VBox/Frontends/VirtualBox/src/settings/UISettingsPage.h
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/settings/UISettingsPage.h	(revision 47572)
+++ trunk/src/VBox/Frontends/VirtualBox/src/settings/UISettingsPage.h	(revision 47573)
@@ -93,6 +93,6 @@
 
     /* Validation stuff: */
-    virtual void setValidator(UIPageValidator* /* pValidator */) {}
-    virtual bool revalidate(QString& /* strWarningText */, QString& /* strTitle */) { return true; }
+    void setValidator(UIPageValidator *pValidator);
+    virtual bool validate(QString& /* strWarningText */, QString& /* strTitle */) { return true; }
 
     /* Navigation stuff: */
@@ -129,4 +129,9 @@
     virtual void polishPage() {}
 
+public slots:
+
+    /* Handler: Validation stuff: */
+    void revalidate();
+
 protected:
 
@@ -136,5 +141,5 @@
 private:
 
-    /* Private variables: */
+    /* Variables: */
     UISettingsPageType m_pageType;
     SettingsDialogType m_dialogType;
@@ -143,4 +148,5 @@
     bool m_fFailed;
     QWidget *m_pFirstWidget;
+    UIPageValidator *m_pValidator;
 };
 
Index: trunk/src/VBox/Frontends/VirtualBox/src/settings/global/UIGlobalSettingsInput.cpp
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/settings/global/UIGlobalSettingsInput.cpp	(revision 47572)
+++ trunk/src/VBox/Frontends/VirtualBox/src/settings/global/UIGlobalSettingsInput.cpp	(revision 47573)
@@ -36,6 +36,5 @@
 /* Input page constructor: */
 UIGlobalSettingsInput::UIGlobalSettingsInput()
-    : m_pValidator(0)
-    , m_pTabWidget(0)
+    : m_pTabWidget(0)
     , m_pSelectorFilterEditor(0), m_pSelectorModel(0), m_pSelectorTable(0)
     , m_pMachineFilterEditor(0), m_pMachineModel(0), m_pMachineTable(0)
@@ -81,4 +80,7 @@
     setTabOrder(m_pMachineFilterEditor, m_pMachineTable);
 
+    /* Prepare validation: */
+    prepareValidation();
+
     /* Apply language settings: */
     retranslateUi();
@@ -120,7 +122,6 @@
     m_pEnableAutoGrabCheckbox->setChecked(m_cache.m_fAutoCapture);
 
-    /* Revalidate if possible: */
-    if (m_pValidator)
-        m_pValidator->revalidate();
+    /* Revalidate: */
+    revalidate();
 }
 
@@ -160,13 +161,5 @@
 }
 
-void UIGlobalSettingsInput::setValidator(UIPageValidator *pValidator)
-{
-    /* Configure validation: */
-    m_pValidator = pValidator;
-    connect(m_pSelectorModel, SIGNAL(sigRevalidationRequired()), m_pValidator, SLOT(revalidate()));
-    connect(m_pMachineModel, SIGNAL(sigRevalidationRequired()), m_pValidator, SLOT(revalidate()));
-}
-
-bool UIGlobalSettingsInput::revalidate(QString &strWarning, QString &strTitle)
+bool UIGlobalSettingsInput::validate(QString &strWarning, QString &strTitle)
 {
     /* Check for unique shortcuts: */
@@ -184,4 +177,5 @@
     }
 
+    /* Pass by default: */
     return true;
 }
@@ -209,4 +203,11 @@
     m_pSelectorFilterEditor->setWhatsThis(tr("Enter a sequence to filter the shortcut list."));
     m_pMachineFilterEditor->setWhatsThis(tr("Enter a sequence to filter the shortcut list."));
+}
+
+void UIGlobalSettingsInput::prepareValidation()
+{
+    /* Prepare validation: */
+    connect(m_pSelectorModel, SIGNAL(sigRevalidationRequired()), this, SLOT(revalidate()));
+    connect(m_pMachineModel, SIGNAL(sigRevalidationRequired()), this, SLOT(revalidate()));
 }
 
Index: trunk/src/VBox/Frontends/VirtualBox/src/settings/global/UIGlobalSettingsInput.h
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/settings/global/UIGlobalSettingsInput.h	(revision 47572)
+++ trunk/src/VBox/Frontends/VirtualBox/src/settings/global/UIGlobalSettingsInput.h	(revision 47573)
@@ -140,6 +140,5 @@
 
     /* API: Validation stuff: */
-    void setValidator(UIPageValidator *pValidator);
-    bool revalidate(QString &strWarning, QString &strTitle);
+    bool validate(QString &strWarning, QString &strTitle);
 
     /* Helper: Navigation stuff: */
@@ -151,6 +150,6 @@
 private:
 
-    /* Variable: Validation stuff: */
-    UIPageValidator *m_pValidator;
+    /* Helper: Prepare stuff: */
+    void prepareValidation();
 
     /* Cache: */
Index: trunk/src/VBox/Frontends/VirtualBox/src/settings/global/UIGlobalSettingsNetwork.cpp
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/settings/global/UIGlobalSettingsNetwork.cpp	(revision 47572)
+++ trunk/src/VBox/Frontends/VirtualBox/src/settings/global/UIGlobalSettingsNetwork.cpp	(revision 47573)
@@ -58,5 +58,5 @@
 
 /* Validation stuff: */
-bool UIHostInterfaceItem::revalidate(QString &strWarning, QString & /* strTitle */)
+bool UIHostInterfaceItem::validate(QString &strWarning, QString&)
 {
     /* Host-only interface validation: */
@@ -196,6 +196,5 @@
 /* Network page constructor: */
 UIGlobalSettingsNetwork::UIGlobalSettingsNetwork()
-    : m_pValidator(0)
-    , m_pAddAction(0), m_pDelAction(0), m_pEditAction(0)
+    : m_pAddAction(0), m_pDelAction(0), m_pEditAction(0)
     , m_fChanged(false)
 {
@@ -276,7 +275,6 @@
     sltUpdateCurrentItem();
 
-    /* Revalidate if possible: */
-    if (m_pValidator)
-        m_pValidator->revalidate();
+    /* Revalidate: */
+    revalidate();
 }
 
@@ -372,15 +370,10 @@
 }
 
-void UIGlobalSettingsNetwork::setValidator(UIPageValidator *pValidator)
-{
-    /* Configure validation: */
-    m_pValidator = pValidator;
-}
-
 /* Validation processing: */
-bool UIGlobalSettingsNetwork::revalidate(QString &strWarning, QString &strTitle)
-{
+bool UIGlobalSettingsNetwork::validate(QString &strWarning, QString &strTitle)
+{
+    /* Redirect validation to items: */
     UIHostInterfaceItem *pItem = static_cast<UIHostInterfaceItem*>(m_pInterfacesTree->currentItem());
-    return pItem ? pItem->revalidate(strWarning, strTitle) : true;
+    return pItem ? pItem->validate(strWarning, strTitle) : true;
 }
 
@@ -505,7 +498,6 @@
         m_fChanged = true;
 
-        /* Revalidate if possible: */
-        if (m_pValidator)
-            m_pValidator->revalidate();
+        /* Revalidate: */
+        revalidate();
     }
 }
Index: trunk/src/VBox/Frontends/VirtualBox/src/settings/global/UIGlobalSettingsNetwork.h
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/settings/global/UIGlobalSettingsNetwork.h	(revision 47572)
+++ trunk/src/VBox/Frontends/VirtualBox/src/settings/global/UIGlobalSettingsNetwork.h	(revision 47573)
@@ -97,5 +97,5 @@
 
     /* API: Validation stuff: */
-    bool revalidate(QString &strWarning, QString &strTitle);
+    bool validate(QString &strWarning, QString &strTitle);
 
     /* API: Update stuff: */
@@ -164,6 +164,5 @@
 
     /* API: Validation stuff: */
-    void setValidator(UIPageValidator *pValidator);
-    bool revalidate(QString &strWarning, QString &strTitle);
+    bool validate(QString &strWarning, QString &strTitle);
 
     /* Navigation stuff: */
@@ -190,7 +189,4 @@
     void removeListItem(UIHostInterfaceItem *pItem);
 
-    /* Variable: Validation stuff: */
-    UIPageValidator *m_pValidator;
-
     /* Helper actions: */
     QAction *m_pAddAction;
Index: trunk/src/VBox/Frontends/VirtualBox/src/settings/global/UIGlobalSettingsProxy.cpp
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/settings/global/UIGlobalSettingsProxy.cpp	(revision 47572)
+++ trunk/src/VBox/Frontends/VirtualBox/src/settings/global/UIGlobalSettingsProxy.cpp	(revision 47573)
@@ -28,5 +28,4 @@
 /* General page constructor: */
 UIGlobalSettingsProxy::UIGlobalSettingsProxy()
-    : m_pValidator(0)
 {
     /* Apply UI decorations: */
@@ -72,7 +71,6 @@
     sltProxyToggled();
 
-    /* Revalidate if possible: */
-    if (m_pValidator)
-        m_pValidator->revalidate();
+    /* Revalidate: */
+    revalidate();
 }
 
@@ -104,8 +102,24 @@
 }
 
-void UIGlobalSettingsProxy::setValidator(UIPageValidator *pValidator)
+bool UIGlobalSettingsProxy::validate(QString &strWarning, QString&)
 {
-    /* Configure validation: */
-    m_pValidator = pValidator;
+    /* Pass if proxy is disabled: */
+    if (!m_pCheckboxProxy->isChecked())
+        return true;
+
+    /* Check for host/port values: */
+    if (m_pHostEditor->text().trimmed().isEmpty())
+    {
+        strWarning = tr("host is not specified.");
+        return false;
+    }
+    else if (m_pPortEditor->text().trimmed().isEmpty())
+    {
+        strWarning = tr("port is not specified.");
+        return false;
+    }
+
+    /* Pass by default: */
+    return true;
 }
 
@@ -129,7 +143,6 @@
     m_pContainerProxy->setEnabled(m_pCheckboxProxy->isChecked());
 
-    /* Revalidate if possible: */
-    if (m_pValidator)
-        m_pValidator->revalidate();
+    /* Revalidate: */
+    revalidate();
 }
 
Index: trunk/src/VBox/Frontends/VirtualBox/src/settings/global/UIGlobalSettingsProxy.h
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/settings/global/UIGlobalSettingsProxy.h	(revision 47572)
+++ trunk/src/VBox/Frontends/VirtualBox/src/settings/global/UIGlobalSettingsProxy.h	(revision 47573)
@@ -62,5 +62,5 @@
 
     /* API: Validation stuff: */
-    void setValidator(UIPageValidator *pValidator);
+    bool validate(QString &strWarning, QString &strTitle);
 
     /* Helper: Navigation stuff: */
@@ -77,7 +77,4 @@
 private:
 
-    /* Variable: Validation stuff: */
-    UIPageValidator *m_pValidator;
-
     /* Cache: */
     UISettingsCacheGlobalProxy m_cache;
Index: trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsDisplay.cpp
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsDisplay.cpp	(revision 47572)
+++ trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsDisplay.cpp	(revision 47573)
@@ -32,6 +32,5 @@
 
 UIMachineSettingsDisplay::UIMachineSettingsDisplay()
-    : m_pValidator(0)
-    , m_iMinVRAM(0)
+    : m_iMinVRAM(0)
     , m_iMaxVRAM(0)
     , m_iMaxVRAMVisible(0)
@@ -71,7 +70,6 @@
     checkVRAMRequirements();
 
-    /* Revalidate if possible: */
-    if (m_pValidator)
-        m_pValidator->revalidate();
+    /* Revalidate: */
+    revalidate();
 }
 
@@ -177,7 +175,6 @@
     polishPage();
 
-    /* Revalidate if possible: */
-    if (m_pValidator)
-        m_pValidator->revalidate();
+    /* Revalidate: */
+    revalidate();
 }
 
@@ -304,18 +301,5 @@
 }
 
-void UIMachineSettingsDisplay::setValidator(UIPageValidator *pValidator)
-{
-    /* Configure validation: */
-    m_pValidator = pValidator;
-    connect(m_pCheckbox3D, SIGNAL(stateChanged(int)), m_pValidator, SLOT(revalidate()));
-#ifdef VBOX_WITH_VIDEOHWACCEL
-    connect(m_pCheckbox2DVideo, SIGNAL(stateChanged(int)), m_pValidator, SLOT(revalidate()));
-#endif /* VBOX_WITH_VIDEOHWACCEL */
-    connect(m_pCheckboxRemoteDisplay, SIGNAL(toggled(bool)), m_pValidator, SLOT(revalidate()));
-    connect(m_pEditorRemoteDisplayPort, SIGNAL(textChanged(const QString&)), m_pValidator, SLOT(revalidate()));
-    connect(m_pEditorRemoteDisplayTimeout, SIGNAL(textChanged(const QString&)), m_pValidator, SLOT(revalidate()));
-}
-
-bool UIMachineSettingsDisplay::revalidate(QString &strWarning, QString& /* strTitle */)
+bool UIMachineSettingsDisplay::validate(QString &strWarning, QString&)
 {
     /* Check if video RAM requirement changed first: */
@@ -403,4 +387,5 @@
     }
 
+    /* Pass by default: */
     return true;
 }
@@ -498,7 +483,6 @@
     m_pEditorVideoMemorySize->blockSignals(false);
 
-    /* Revalidate if possible: */
-    if (m_pValidator)
-        m_pValidator->revalidate();
+    /* Revalidate: */
+    revalidate();
 }
 
@@ -510,7 +494,6 @@
     m_pSliderVideoMemorySize->blockSignals(false);
 
-    /* Revalidate if possible: */
-    if (m_pValidator)
-        m_pValidator->revalidate();
+    /* Revalidate: */
+    revalidate();
 }
 
@@ -528,7 +511,6 @@
     updateVideoCaptureScreenCount();
 
-    /* Revalidate if possible: */
-    if (m_pValidator)
-        m_pValidator->revalidate();
+    /* Revalidate: */
+    revalidate();
 }
 
@@ -546,7 +528,6 @@
     updateVideoCaptureScreenCount();
 
-    /* Revalidate if possible: */
-    if (m_pValidator)
-        m_pValidator->revalidate();
+    /* Revalidate: */
+    revalidate();
 }
 
@@ -667,4 +648,7 @@
     prepareRemoteDisplayTab();
     prepareVideoCaptureTab();
+
+    /* Prepare validation: */
+    prepareValidation();
 
     /* Translate finally: */
@@ -812,4 +796,16 @@
 }
 
+void UIMachineSettingsDisplay::prepareValidation()
+{
+    /* Configure validation: */
+    connect(m_pCheckbox3D, SIGNAL(stateChanged(int)), this, SLOT(revalidate()));
+#ifdef VBOX_WITH_VIDEOHWACCEL
+    connect(m_pCheckbox2DVideo, SIGNAL(stateChanged(int)), this, SLOT(revalidate()));
+#endif /* VBOX_WITH_VIDEOHWACCEL */
+    connect(m_pCheckboxRemoteDisplay, SIGNAL(toggled(bool)), this, SLOT(revalidate()));
+    connect(m_pEditorRemoteDisplayPort, SIGNAL(textChanged(const QString&)), this, SLOT(revalidate()));
+    connect(m_pEditorRemoteDisplayTimeout, SIGNAL(textChanged(const QString&)), this, SLOT(revalidate()));
+}
+
 void UIMachineSettingsDisplay::checkVRAMRequirements()
 {
Index: trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsDisplay.h
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsDisplay.h	(revision 47572)
+++ trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsDisplay.h	(revision 47573)
@@ -146,6 +146,5 @@
 
     /* API: Validation stuff: */
-    void setValidator(UIPageValidator *pValidator);
-    bool revalidate(QString &strWarning, QString &strTitle);
+    bool validate(QString &strWarning, QString &strTitle);
 
     /* Helper: Navigation stuff: */
@@ -183,4 +182,5 @@
     void prepareRemoteDisplayTab();
     void prepareVideoCaptureTab();
+    void prepareValidation();
 
     /* Helpers: Video stuff: */
@@ -195,7 +195,4 @@
     static int calculateBitRate(int iFrameWidth, int iFrameHeight, int iFrameRate, int iQuality);
     static int calculateQuality(int iFrameWidth, int iFrameHeight, int iFrameRate, int iBitRate);
-
-    /* Variable: Validation stuff: */
-    UIPageValidator *m_pValidator;
 
     /* Guest OS type id: */
Index: trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsGeneral.cpp
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsGeneral.cpp	(revision 47572)
+++ trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsGeneral.cpp	(revision 47573)
@@ -29,6 +29,5 @@
 
 UIMachineSettingsGeneral::UIMachineSettingsGeneral()
-    : m_pValidator(0)
-    , m_fHWVirtExEnabled(false)
+    : m_fHWVirtExEnabled(false)
 {
     /* Apply UI decorations */
@@ -54,4 +53,7 @@
 #endif /* Q_WS_MAC */
 
+    /* Prepare validation: */
+    prepareValidation();
+
     /* Applying language settings */
     retranslateUi();
@@ -72,7 +74,6 @@
     m_fHWVirtExEnabled = fEnabled;
 
-    /* Revalidate if possible: */
-    if (m_pValidator)
-        m_pValidator->revalidate();
+    /* Revalidate: */
+    revalidate();
 }
 
@@ -146,7 +147,6 @@
     polishPage();
 
-    /* Revalidate if possible: */
-    if (m_pValidator)
-        m_pValidator->revalidate();
+    /* Revalidate: */
+    revalidate();
 }
 
@@ -224,13 +224,5 @@
 }
 
-void UIMachineSettingsGeneral::setValidator(UIPageValidator *pValidator)
-{
-    /* Configure validation: */
-    m_pValidator = pValidator;
-    connect(m_pNameAndSystemEditor, SIGNAL(sigOsTypeChanged()), m_pValidator, SLOT(revalidate()));
-    connect(m_pNameAndSystemEditor, SIGNAL(sigNameChanged(const QString&)), m_pValidator, SLOT(revalidate()));
-}
-
-bool UIMachineSettingsGeneral::revalidate(QString &strWarning, QString& /* strTitle */)
+bool UIMachineSettingsGeneral::validate(QString &strWarning, QString&)
 {
     /* VM name validation: */
@@ -250,4 +242,5 @@
     }
 
+    /* Pass by default: */
     return true;
 }
@@ -293,4 +286,11 @@
     mCbDragAndDrop->setItemText (2, gpConverter->toString (KDragAndDropMode_GuestToHost));
     mCbDragAndDrop->setItemText (3, gpConverter->toString (KDragAndDropMode_Bidirectional));
+}
+
+void UIMachineSettingsGeneral::prepareValidation()
+{
+    /* Prepare validation: */
+    connect(m_pNameAndSystemEditor, SIGNAL(sigOsTypeChanged()), this, SLOT(revalidate()));
+    connect(m_pNameAndSystemEditor, SIGNAL(sigNameChanged(const QString&)), this, SLOT(revalidate()));
 }
 
Index: trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsGeneral.h
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsGeneral.h	(revision 47572)
+++ trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsGeneral.h	(revision 47573)
@@ -107,6 +107,5 @@
 
     /* API: Validation stuff: */
-    void setValidator(UIPageValidator *pValidator);
-    bool revalidate(QString &strWarning, QString &strTitle);
+    bool validate(QString &strWarning, QString &strTitle);
 
     void setOrderAfter (QWidget *aWidget);
@@ -116,8 +115,8 @@
 private:
 
+    /* Helper: Prepare stuff: */
+    void prepareValidation();
+
     void polishPage();
-
-    /* Variable: Validation stuff: */
-    UIPageValidator *m_pValidator;
 
     /* Cache: */
Index: trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsNetwork.cpp
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsNetwork.cpp	(revision 47572)
+++ trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsNetwork.cpp	(revision 47573)
@@ -48,5 +48,4 @@
     : QIWithRetranslateUI<QWidget>(0)
     , m_pParent(pParent)
-    , m_pValidator(0)
     , m_iSlot(-1)
 {
@@ -69,4 +68,7 @@
     connect(this, SIGNAL(sigTabUpdated()), m_pParent, SLOT(sltHandleUpdatedTab()));
 
+    /* Prepare validation: */
+    prepareValidation();
+
     /* Applying language settings: */
     retranslateUi();
@@ -161,14 +163,7 @@
 }
 
-void UIMachineSettingsNetwork::setValidator(UIPageValidator *pValidator)
-{
-    /* Configure validation: */
-    m_pValidator = pValidator;
-    connect(m_pMACEditor, SIGNAL(textEdited(const QString &)), m_pValidator, SLOT(revalidate()));
-}
-
-bool UIMachineSettingsNetwork::revalidate(QString &strWarning, QString &strTitle)
-{
-    /* 'True' for disabled adapter: */
+bool UIMachineSettingsNetwork::validate(QString &strWarning, QString &strTitle)
+{
+    /* Pass if adapter is disabled: */
     if (!m_pEnableAdapterCheckBox->isChecked())
         return true;
@@ -219,5 +214,5 @@
 
     /* Validate MAC-address length: */
-    if (m_pMACEditor->text().size() < 12)
+    if (fValid && m_pMACEditor->text().size() < 12)
     {
         strWarning = tr("the MAC address must be 12 hexadecimal digits long.");
@@ -225,5 +220,5 @@
     }
     /* Make sure MAC-address is unicast: */
-    if (m_pMACEditor->text().size() >= 2)
+    if (fValid && m_pMACEditor->text().size() >= 2)
     {
         QRegExp validator("^[0-9A-Fa-f][02468ACEace]");
@@ -358,7 +353,6 @@
     m_pAdapterOptionsContainer->setEnabled(m_pEnableAdapterCheckBox->isChecked());
 
-    /* Revalidate if possible: */
-    if (m_pValidator)
-        m_pValidator->revalidate();
+    /* Revalidate: */
+    m_pParent->revalidate();
 }
 
@@ -484,7 +478,6 @@
     }
 
-    /* Revalidate if possible: */
-    if (m_pValidator)
-        m_pValidator->revalidate();
+    /* Revalidate: */
+    m_pParent->revalidate();
 }
 
@@ -517,4 +510,10 @@
     if (dlg.exec() == QDialog::Accepted)
         m_portForwardingRules = dlg.rules();
+}
+
+void UIMachineSettingsNetwork::prepareValidation()
+{
+    /* Configure validation: */
+    connect(m_pMACEditor, SIGNAL(textEdited(const QString &)), m_pParent, SLOT(revalidate()));
 }
 
@@ -727,6 +726,5 @@
 /* UIMachineSettingsNetworkPage Stuff: */
 UIMachineSettingsNetworkPage::UIMachineSettingsNetworkPage()
-    : m_pValidator(0)
-    , m_pTwAdapters(0)
+    : m_pTwAdapters(0)
 {
     /* Setup main layout: */
@@ -832,7 +830,4 @@
         pTab->fetchAdapterCache(m_cache.child(iSlot));
 
-        /* Setup page validation: */
-        pTab->setValidator(m_pValidator);
-
         /* Setup tab order: */
         pLastFocusWidget = pTab->setOrderAfter(pLastFocusWidget);
@@ -845,7 +840,6 @@
     polishPage();
 
-    /* Revalidate if possible: */
-    if (m_pValidator)
-        m_pValidator->revalidate();
+    /* Revalidate: */
+    revalidate();
 }
 
@@ -945,19 +939,15 @@
 }
 
-void UIMachineSettingsNetworkPage::setValidator(UIPageValidator *pValidator)
-{
-    /* Configure validation: */
-    m_pValidator = pValidator;
-}
-
-bool UIMachineSettingsNetworkPage::revalidate(QString &strWarning, QString &strTitle)
-{
+bool UIMachineSettingsNetworkPage::validate(QString &strWarning, QString &strTitle)
+{
+    /* Pass by default: */
     bool fValid = true;
 
+    /* Delegate validation to adapters: */
     for (int i = 0; i < m_pTwAdapters->count(); ++i)
     {
         UIMachineSettingsNetwork *pTab = qobject_cast<UIMachineSettingsNetwork*>(m_pTwAdapters->widget(i));
         Assert(pTab);
-        fValid = pTab->revalidate(strWarning, strTitle);
+        fValid = pTab->validate(strWarning, strTitle);
         if (!fValid)
             break;
Index: trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsNetwork.h
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsNetwork.h	(revision 47572)
+++ trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsNetwork.h	(revision 47573)
@@ -110,6 +110,5 @@
 
     /* API: Validation stuff: */
-    void setValidator(UIPageValidator *pValidator);
-    bool revalidate(QString &strWarning, QString &strTitle);
+    bool validate(QString &strWarning, QString &strTitle);
 
     /* Navigation stuff: */
@@ -145,4 +144,7 @@
 private:
 
+    /* Helper: Prepare stuff: */
+    void prepareValidation();
+
     /* Helping stuff: */
     void populateComboboxes();
@@ -156,7 +158,4 @@
     /* Parent page: */
     UIMachineSettingsNetworkPage *m_pParent;
-
-    /* Variable: Validation stuff: */
-    UIPageValidator *m_pValidator;
 
     /* Other variables: */
@@ -208,6 +207,5 @@
 
     /* API: Validation stuff: */
-    void setValidator(UIPageValidator *pValidator);
-    bool revalidate(QString &strWarning, QString &strTitle);
+    bool validate(QString &strWarning, QString &strTitle);
 
     /* Translation stuff: */
@@ -234,7 +232,4 @@
     static void updateGenericProperties(CNetworkAdapter &adapter, const QString &strPropText);
 
-    /* Variable: Validation stuff: */
-    UIPageValidator *m_pValidator;
-
     /* Tab holder: */
     QITabWidget *m_pTwAdapters;
Index: trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsParallel.cpp
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsParallel.cpp	(revision 47572)
+++ trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsParallel.cpp	(revision 47573)
@@ -33,5 +33,4 @@
 UIMachineSettingsParallel::UIMachineSettingsParallel(UIMachineSettingsParallelPage *pParent)
     : QIWithRetranslateUI<QWidget> (0)
-    , m_pValidator(0)
     , m_pParent(pParent)
     , m_iSlot(-1)
@@ -59,4 +58,7 @@
     connect (mCbNumber, SIGNAL (activated (const QString &)),
              this, SLOT (mCbNumberActivated (const QString &)));
+
+    /* Prepare validation: */
+    prepareValidation();
 
     /* Applying language settings */
@@ -114,13 +116,4 @@
 }
 
-void UIMachineSettingsParallel::setValidator(UIPageValidator *pValidator)
-{
-    /* Configure validation: */
-    m_pValidator = pValidator;
-    connect(mLeIRQ, SIGNAL(textChanged(const QString&)), m_pValidator, SLOT(revalidate()));
-    connect(mLeIOPort, SIGNAL(textChanged(const QString&)), m_pValidator, SLOT(revalidate()));
-    connect(mLePath, SIGNAL(textChanged(const QString&)), m_pValidator, SLOT(revalidate()));
-}
-
 QWidget* UIMachineSettingsParallel::setOrderAfter (QWidget *aAfter)
 {
@@ -157,7 +150,6 @@
         mCbNumberActivated (mCbNumber->currentText());
 
-    /* Revalidate if possible: */
-    if (m_pValidator)
-        m_pValidator->revalidate();
+    /* Revalidate: */
+    m_pParent->revalidate();
 }
 
@@ -175,7 +167,14 @@
     }
 
-    /* Revalidate if possible: */
-    if (m_pValidator)
-        m_pValidator->revalidate();
+    /* Revalidate: */
+    m_pParent->revalidate();
+}
+
+void UIMachineSettingsParallel::prepareValidation()
+{
+    /* Prepare validation: */
+    connect(mLeIRQ, SIGNAL(textChanged(const QString&)), m_pParent, SLOT(revalidate()));
+    connect(mLeIOPort, SIGNAL(textChanged(const QString&)), m_pParent, SLOT(revalidate()));
+    connect(mLePath, SIGNAL(textChanged(const QString&)), m_pParent, SLOT(revalidate()));
 }
 
@@ -183,6 +182,5 @@
 /* UIMachineSettingsParallelPage stuff */
 UIMachineSettingsParallelPage::UIMachineSettingsParallelPage()
-    : m_pValidator(0)
-    , mTabWidget(0)
+    : mTabWidget(0)
 {
     /* TabWidget creation */
@@ -257,7 +255,4 @@
         pPage->fetchPortData(m_cache.child(iPort));
 
-        /* Setup page validation: */
-        pPage->setValidator(m_pValidator);
-
         /* Setup tab order: */
         pLastFocusWidget = pPage->setOrderAfter(pLastFocusWidget);
@@ -270,7 +265,6 @@
     polishPage();
 
-    /* Revalidate if possible: */
-    if (m_pValidator)
-        m_pValidator->revalidate();
+    /* Revalidate: */
+    revalidate();
 }
 
@@ -331,11 +325,5 @@
 }
 
-void UIMachineSettingsParallelPage::setValidator(UIPageValidator *pValidator)
-{
-    /* Configure validation: */
-    m_pValidator = pValidator;
-}
-
-bool UIMachineSettingsParallelPage::revalidate (QString &aWarning, QString &aTitle)
+bool UIMachineSettingsParallelPage::validate(QString &strWarning, QString &strTitle)
 {
     bool valid = true;
@@ -362,10 +350,10 @@
             {
                 if (strIRQ.isEmpty())
-                    aWarning = tr("IRC not specified.");
+                    strWarning = tr("IRC not specified.");
                 else if (strIOPort.isEmpty())
-                    aWarning = tr("IO port not specified.");
+                    strWarning = tr("IO port not specified.");
                 else
-                    aWarning = tr ("duplicate port attributes specified.");
-                aTitle += ": " +
+                    strWarning = tr ("duplicate port attributes specified.");
+                strTitle += ": " +
                     vboxGlobal().removeAccelMark(mTabWidget->tabText(mTabWidget->indexOf(tab)));
             }
@@ -379,8 +367,8 @@
             if (!valid)
             {
-                aWarning = path.isEmpty() ?
+                strWarning = path.isEmpty() ?
                     tr ("Port path not specified ") :
                     tr ("Duplicate port path entered ");
-                aTitle += ": " +
+                strTitle += ": " +
                     vboxGlobal().removeAccelMark (mTabWidget->tabText (mTabWidget->indexOf (tab)));
                 break;
Index: trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsParallel.h
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsParallel.h	(revision 47572)
+++ trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsParallel.h	(revision 47573)
@@ -84,7 +84,4 @@
     void uploadPortData(UICacheSettingsMachineParallelPort &portCache);
 
-    /* API: Validation stuff: */
-    void setValidator(UIPageValidator *pValidator);
-
     QWidget* setOrderAfter (QWidget *aAfter);
 
@@ -103,6 +100,6 @@
 private:
 
-    /* Variable: Validation stuff: */
-    UIPageValidator *m_pValidator;
+    /* Helper: Prepare stuff: */
+    void prepareValidation();
 
     UIMachineSettingsParallelPage *m_pParent;
@@ -139,6 +136,5 @@
 
     /* API: Validation stuff: */
-    void setValidator(UIPageValidator *pValidator);
-    bool revalidate (QString &aWarning, QString &aTitle);
+    bool validate(QString &strWarning, QString &strTitle);
 
     void retranslateUi();
@@ -147,7 +143,4 @@
 
     void polishPage();
-
-    /* Variable: Validation stuff: */
-    UIPageValidator *m_pValidator;
 
     QITabWidget *mTabWidget;
Index: trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsSerial.cpp
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsSerial.cpp	(revision 47572)
+++ trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsSerial.cpp	(revision 47573)
@@ -34,5 +34,4 @@
 UIMachineSettingsSerial::UIMachineSettingsSerial(UIMachineSettingsSerialPage *pParent)
     : QIWithRetranslateUI<QWidget> (0)
-    , m_pValidator(0)
     , m_pParent(pParent)
     , m_iSlot(-1)
@@ -67,4 +66,7 @@
     connect (mCbMode, SIGNAL (activated (const QString &)),
              this, SLOT (mCbModeActivated (const QString &)));
+
+    /* Prepare validation: */
+    prepareValidation();
 
     /* Applying language settings */
@@ -130,13 +132,4 @@
 }
 
-void UIMachineSettingsSerial::setValidator(UIPageValidator *pValidator)
-{
-    /* Configure validation: */
-    m_pValidator = pValidator;
-    connect(mLeIRQ, SIGNAL(textChanged(const QString&)), m_pValidator, SLOT(revalidate()));
-    connect(mLeIOPort, SIGNAL(textChanged(const QString&)), m_pValidator, SLOT(revalidate()));
-    connect(mLePath, SIGNAL(textChanged(const QString&)), m_pValidator, SLOT(revalidate()));
-}
-
 QWidget* UIMachineSettingsSerial::setOrderAfter (QWidget *aAfter)
 {
@@ -183,7 +176,6 @@
     }
 
-    /* Revalidate if possible: */
-    if (m_pValidator)
-        m_pValidator->revalidate();
+    /* Revalidate: */
+    m_pParent->revalidate();
 }
 
@@ -201,7 +193,6 @@
     }
 
-    /* Revalidate if possible: */
-    if (m_pValidator)
-        m_pValidator->revalidate();
+    /* Revalidate: */
+    m_pParent->revalidate();
 }
 
@@ -212,7 +203,14 @@
     mLePath->setEnabled (mode != KPortMode_Disconnected);
 
-    /* Revalidate if possible: */
-    if (m_pValidator)
-        m_pValidator->revalidate();
+    /* Revalidate: */
+    m_pParent->revalidate();
+}
+
+void UIMachineSettingsSerial::prepareValidation()
+{
+    /* Prepare validation: */
+    connect(mLeIRQ, SIGNAL(textChanged(const QString&)), m_pParent, SLOT(revalidate()));
+    connect(mLeIOPort, SIGNAL(textChanged(const QString&)), m_pParent, SLOT(revalidate()));
+    connect(mLePath, SIGNAL(textChanged(const QString&)), m_pParent, SLOT(revalidate()));
 }
 
@@ -220,6 +218,5 @@
 /* UIMachineSettingsSerialPage stuff */
 UIMachineSettingsSerialPage::UIMachineSettingsSerialPage()
-    : m_pValidator(0)
-    , mTabWidget(0)
+    : mTabWidget(0)
 {
     /* TabWidget creation */
@@ -296,7 +293,4 @@
         pPage->fetchPortData(m_cache.child(iPort));
 
-        /* Setup page validation: */
-        pPage->setValidator(m_pValidator);
-
         /* Setup tab order: */
         pLastFocusWidget = pPage->setOrderAfter(pLastFocusWidget);
@@ -309,7 +303,6 @@
     polishPage();
 
-    /* Revalidate if possible: */
-    if (m_pValidator)
-        m_pValidator->revalidate();
+    /* Revalidate: */
+    revalidate();
 }
 
@@ -375,11 +368,5 @@
 }
 
-void UIMachineSettingsSerialPage::setValidator(UIPageValidator *pValidator)
-{
-    /* Configure validation: */
-    m_pValidator = pValidator;
-}
-
-bool UIMachineSettingsSerialPage::revalidate (QString &aWarning, QString &aTitle)
+bool UIMachineSettingsSerialPage::validate(QString &strWarning, QString &strTitle)
 {
     bool valid = true;
@@ -406,10 +393,10 @@
             {
                 if (strIRQ.isEmpty())
-                    aWarning = tr("IRC not specified.");
+                    strWarning = tr("IRC not specified.");
                 else if (strIOPort.isEmpty())
-                    aWarning = tr("IO port not specified.");
+                    strWarning = tr("IO port not specified.");
                 else
-                    aWarning = tr ("duplicate port attributes specified.");
-                aTitle += ": " +
+                    strWarning = tr ("duplicate port attributes specified.");
+                strTitle += ": " +
                     vboxGlobal().removeAccelMark(mTabWidget->tabText(mTabWidget->indexOf(tab)));
             }
@@ -430,8 +417,8 @@
                 else
                 {
-                    aWarning = path.isEmpty() ?
+                    strWarning = path.isEmpty() ?
                         tr ("port path not specified.") :
                         tr ("duplicate port path entered.");
-                    aTitle += ": " +
+                    strTitle += ": " +
                         vboxGlobal().removeAccelMark (mTabWidget->tabText (mTabWidget->indexOf (tab)));
                     break;
Index: trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsSerial.h
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsSerial.h	(revision 47572)
+++ trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsSerial.h	(revision 47573)
@@ -90,7 +90,4 @@
     void uploadPortData(UICacheSettingsMachineSerialPort &data);
 
-    /* API: Validation stuff: */
-    void setValidator(UIPageValidator *pValidator);
-
     QWidget* setOrderAfter (QWidget *aAfter);
 
@@ -110,6 +107,6 @@
 private:
 
-    /* Variable: Validation stuff: */
-    UIPageValidator *m_pValidator;
+    /* Helper: Prepare stuff: */
+    void prepareValidation();
 
     UIMachineSettingsSerialPage *m_pParent;
@@ -146,6 +143,5 @@
 
     /* API: Validation stuff: */
-    void setValidator(UIPageValidator *pValidator);
-    bool revalidate (QString &aWarning, QString &aTitle);
+    bool validate(QString &strWarning, QString &strTitle);
 
     void retranslateUi();
@@ -154,7 +150,4 @@
 
     void polishPage();
-
-    /* Variable: Validation stuff: */
-    UIPageValidator *m_pValidator;
 
     QITabWidget *mTabWidget;
Index: trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsStorage.cpp
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsStorage.cpp	(revision 47572)
+++ trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsStorage.cpp	(revision 47573)
@@ -1719,6 +1719,5 @@
  */
 UIMachineSettingsStorage::UIMachineSettingsStorage()
-    : m_pValidator(0)
-    , mStorageModel(0)
+    : mStorageModel(0)
     , mAddCtrAction(0), mDelCtrAction(0)
     , mAddIDECtrAction(0), mAddSATACtrAction(0), mAddSCSICtrAction(0), mAddSASCtrAction(0), mAddFloppyCtrAction(0)
@@ -1896,7 +1895,6 @@
     updateActionsState();
 
-    /* Revalidate if possible: */
-    if (m_pValidator)
-        m_pValidator->revalidate();
+    /* Revalidate: */
+    revalidate();
 }
 
@@ -2037,7 +2035,6 @@
     polishPage();
 
-    /* Revalidate if possible: */
-    if (m_pValidator)
-        m_pValidator->revalidate();
+    /* Revalidate: */
+    revalidate();
 }
 
@@ -2107,11 +2104,5 @@
 }
 
-void UIMachineSettingsStorage::setValidator(UIPageValidator *pValidator)
-{
-    /* Configure validation: */
-    m_pValidator = pValidator;
-}
-
-bool UIMachineSettingsStorage::revalidate (QString &strWarning, QString& /* strTitle */)
+bool UIMachineSettingsStorage::validate(QString &strWarning, QString&)
 {
     /* Check controllers for name emptiness & coincidence.
@@ -2191,4 +2182,5 @@
     }
 
+    /* Pass by default: */
     return true;
 }
@@ -2280,7 +2272,6 @@
                 mStorageModel->setData (attIndex, attMediumId, StorageModel::R_AttMediumId);
 
-                /* Revalidate if possible: */
-                if (m_pValidator)
-                    m_pValidator->revalidate();
+                /* Revalidate: */
+                revalidate();
             }
         }
@@ -2302,7 +2293,6 @@
                 mStorageModel->setData (attIndex, UIMedium().id(), StorageModel::R_AttMediumId);
 
-                /* Revalidate if possible: */
-                if (m_pValidator)
-                    m_pValidator->revalidate();
+                /* Revalidate: */
+                revalidate();
             }
         }
@@ -2354,7 +2344,6 @@
     emit storageChanged();
 
-    /* Revalidate if possible: */
-    if (m_pValidator)
-        m_pValidator->revalidate();
+    /* Revalidate: */
+    revalidate();
 }
 
@@ -2436,7 +2425,6 @@
     emit storageChanged();
 
-    /* Revalidate if possible: */
-    if (m_pValidator)
-        m_pValidator->revalidate();
+    /* Revalidate: */
+    revalidate();
 }
 
@@ -2564,7 +2552,6 @@
     }
 
-    /* Revalidate if possible: */
-    if (m_pValidator)
-        m_pValidator->revalidate();
+    /* Revalidate: */
+    revalidate();
 
     mIsLoadingInProgress = false;
@@ -3102,7 +3089,6 @@
         emit storageChanged();
 
-        /* Revalidate if possible: */
-        if (m_pValidator)
-            m_pValidator->revalidate();
+        /* Revalidate: */
+        revalidate();
     }
 }
Index: trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsStorage.h
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsStorage.h	(revision 47572)
+++ trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsStorage.h	(revision 47573)
@@ -674,6 +674,5 @@
 
     /* API: Validation stuff: */
-    void setValidator(UIPageValidator *pValidator);
-    bool revalidate (QString &aWarning, QString &aTitle);
+    bool validate(QString &strWarning, QString &strTitle);
 
     void retranslateUi();
@@ -757,7 +756,4 @@
     void polishPage();
 
-    /* Variable: Validation stuff: */
-    UIPageValidator *m_pValidator;
-
     QString m_strMachineId;
     QString m_strMachineSettingsFilePath;
Index: trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsSystem.cpp
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsSystem.cpp	(revision 47572)
+++ trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsSystem.cpp	(revision 47573)
@@ -35,6 +35,5 @@
 
 UIMachineSettingsSystem::UIMachineSettingsSystem()
-    : m_pValidator(0)
-    , m_uMinGuestCPU(0), m_uMaxGuestCPU(0)
+    : m_uMinGuestCPU(0), m_uMaxGuestCPU(0)
     , m_uMinGuestCPUExecCap(0), m_uMedGuestCPUExecCap(0), m_uMaxGuestCPUExecCap(0)
     , m_fOHCIEnabled(false)
@@ -68,7 +67,6 @@
     m_fOHCIEnabled = fEnabled;
 
-    /* Revalidate if possible: */
-    if (m_pValidator)
-        m_pValidator->revalidate();
+    /* Revalidate: */
+    revalidate();
 }
 
@@ -187,7 +185,6 @@
     polishPage();
 
-    /* Revalidate if possible: */
-    if (m_pValidator)
-        m_pValidator->revalidate();
+    /* Revalidate: */
+    revalidate();
 }
 
@@ -288,15 +285,5 @@
 }
 
-void UIMachineSettingsSystem::setValidator(UIPageValidator *pValidator)
-{
-    /* Configure validation: */
-    m_pValidator = pValidator;
-    connect(m_pComboChipsetType, SIGNAL(currentIndexChanged(int)), m_pValidator, SLOT(revalidate()));
-    connect(m_pComboPointingHIDType, SIGNAL(currentIndexChanged(int)), m_pValidator, SLOT(revalidate()));
-    connect(m_pCheckBoxApic, SIGNAL(stateChanged(int)), m_pValidator, SLOT(revalidate()));
-    connect(m_pCheckBoxVirtualization, SIGNAL(stateChanged(int)), m_pValidator, SLOT(revalidate()));
-}
-
-bool UIMachineSettingsSystem::revalidate(QString &strWarning, QString& /* strTitle */)
+bool UIMachineSettingsSystem::validate(QString &strWarning, QString&)
 {
     /* RAM amount test: */
@@ -506,7 +493,6 @@
     m_pEditorMemorySize->blockSignals(false);
 
-    /* Revalidate if possible: */
-    if (m_pValidator)
-        m_pValidator->revalidate();
+    /* Revalidate: */
+    revalidate();
 }
 
@@ -518,7 +504,6 @@
     m_pSliderMemorySize->blockSignals(false);
 
-    /* Revalidate if possible: */
-    if (m_pValidator)
-        m_pValidator->revalidate();
+    /* Revalidate: */
+    revalidate();
 }
 
@@ -542,7 +527,6 @@
     m_pEditorCPUCount->blockSignals(false);
 
-    /* Revalidate if possible: */
-    if (m_pValidator)
-        m_pValidator->revalidate();
+    /* Revalidate: */
+    revalidate();
 }
 
@@ -554,7 +538,6 @@
     m_pSliderCPUCount->blockSignals(false);
 
-    /* Revalidate if possible: */
-    if (m_pValidator)
-        m_pValidator->revalidate();
+    /* Revalidate: */
+    revalidate();
 }
 
@@ -566,7 +549,6 @@
     m_pEditorCPUExecCap->blockSignals(false);
 
-    /* Revalidate if possible: */
-    if (m_pValidator)
-        m_pValidator->revalidate();
+    /* Revalidate: */
+    revalidate();
 }
 
@@ -578,7 +560,6 @@
     m_pSliderCPUExecCap->blockSignals(false);
 
-    /* Revalidate if possible: */
-    if (m_pValidator)
-        m_pValidator->revalidate();
+    /* Revalidate: */
+    revalidate();
 }
 
@@ -588,9 +569,10 @@
     Ui::UIMachineSettingsSystem::setupUi(this);
 
-    /* Prepare 'motherboard' tab: */
+    /* Prepare tabs: */
     prepareTabMotherboard();
-
-    /* Prepare 'processor' tab: */
     prepareTabProcessor();
+
+    /* Prepare validation: */
+    prepareValidation();
 
     /* Retranslate finally: */
@@ -711,4 +693,13 @@
     connect(m_pSliderCPUExecCap, SIGNAL(valueChanged(int)), this, SLOT(sltHandleCPUExecCapSliderChange()));
     connect(m_pEditorCPUExecCap, SIGNAL(valueChanged(int)), this, SLOT(sltHandleCPUExecCapEditorChange()));
+}
+
+void UIMachineSettingsSystem::prepareValidation()
+{
+    /* Prepare validation: */
+    connect(m_pComboChipsetType, SIGNAL(currentIndexChanged(int)), this, SLOT(revalidate()));
+    connect(m_pComboPointingHIDType, SIGNAL(currentIndexChanged(int)), this, SLOT(revalidate()));
+    connect(m_pCheckBoxApic, SIGNAL(stateChanged(int)), this, SLOT(revalidate()));
+    connect(m_pCheckBoxVirtualization, SIGNAL(stateChanged(int)), this, SLOT(revalidate()));
 }
 
Index: trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsSystem.h
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsSystem.h	(revision 47572)
+++ trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsSystem.h	(revision 47573)
@@ -153,6 +153,5 @@
 
     /* API: Validation stuff: */
-    void setValidator(UIPageValidator *pValidator);
-    bool revalidate(QString &strWarning, QString &strTitle);
+    bool validate(QString &strWarning, QString &strTitle);
 
     /* Helper: Navigation stuff: */
@@ -186,4 +185,5 @@
     void prepareTabMotherboard();
     void prepareTabProcessor();
+    void prepareValidation();
 
     /* Helper: Pointing HID type combo stuff: */
@@ -199,7 +199,4 @@
     /* Handler: Event-filtration stuff: */
     bool eventFilter(QObject *aObject, QEvent *aEvent);
-
-    /* Variable: Validation stuff: */
-    UIPageValidator *m_pValidator;
 
     /* Variable: Boot-table stuff: */
Index: trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsUSB.cpp
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsUSB.cpp	(revision 47572)
+++ trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsUSB.cpp	(revision 47573)
@@ -140,5 +140,4 @@
 UIMachineSettingsUSB::UIMachineSettingsUSB(UISettingsPageType type)
     : UISettingsPage(type)
-    , m_pValidator(0)
     , m_pToolBar(0)
     , mNewAction(0), mAddAction(0), mEdtAction(0), mDelAction(0)
@@ -218,4 +217,7 @@
     /* Setup dialog */
     mTwFilters->header()->hide();
+
+    /* Prepare validation: */
+    prepareValidation();
 
     /* Applying language settings */
@@ -386,7 +388,6 @@
     polishPage();
 
-    /* Revalidate if possible: */
-    if (m_pValidator)
-        m_pValidator->revalidate();
+    /* Revalidate: */
+    revalidate();
 }
 
@@ -564,17 +565,10 @@
 }
 
-void UIMachineSettingsUSB::setValidator(UIPageValidator *pValidator)
-{
-    /* Configure validation: */
-    m_pValidator = pValidator;
-    connect(mGbUSB, SIGNAL(stateChanged(int)), m_pValidator, SLOT(revalidate()));
-    connect(mCbUSB2, SIGNAL(stateChanged(int)), m_pValidator, SLOT(revalidate()));
-}
-
-bool UIMachineSettingsUSB::revalidate(QString &strWarningText, QString& /* strTitle */)
-{
+bool UIMachineSettingsUSB::validate(QString &strWarningText, QString&)
+{
+    NOREF(strWarningText);
+
+#ifdef VBOX_WITH_EXTPACK
     /* USB 2.0 Extension Pack presence test: */
-    NOREF(strWarningText);
-#ifdef VBOX_WITH_EXTPACK
     CExtPack extPack = vboxGlobal().virtualBox().GetExtensionPackManager().Find(GUI_ExtPackName);
     if (mGbUSB->isChecked() && mCbUSB2->isChecked() && (extPack.isNull() || !extPack.GetUsable()))
@@ -590,5 +584,7 @@
         return true;
     }
-#endif
+#endif /* VBOX_WITH_EXTPACK */
+
+    /* Pass by default: */
     return true;
 }
@@ -712,7 +708,6 @@
     addUSBFilter(usbFilterData, true /* its new? */);
 
-    /* Revalidate if possible: */
-    if (m_pValidator)
-        m_pValidator->revalidate();
+    /* Revalidate: */
+    revalidate();
 }
 
@@ -760,7 +755,6 @@
     addUSBFilter(usbFilterData, true /* its new? */);
 
-    /* Revalidate if possible: */
-    if (m_pValidator)
-        m_pValidator->revalidate();
+    /* Revalidate: */
+    revalidate();
 }
 
@@ -858,11 +852,7 @@
     /* Update current item: */
     currentChanged(mTwFilters->currentItem());
-    /* Revalidate if possible: */
-    if (!mTwFilters->topLevelItemCount())
-    {
-        /* Revalidate if possible: */
-        if (m_pValidator)
-            m_pValidator->revalidate();
-    }
+
+    /* Revalidate: */
+    revalidate();
 }
 
@@ -924,4 +914,11 @@
 }
 
+void UIMachineSettingsUSB::prepareValidation()
+{
+    /* Prepare validation: */
+    connect(mGbUSB, SIGNAL(stateChanged(int)), this, SLOT(revalidate()));
+    connect(mCbUSB2, SIGNAL(stateChanged(int)), this, SLOT(revalidate()));
+}
+
 void UIMachineSettingsUSB::addUSBFilter(const UIDataSettingsMachineUSBFilter &usbFilterData, bool fIsNew)
 {
Index: trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsUSB.h
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsUSB.h	(revision 47572)
+++ trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsUSB.h	(revision 47573)
@@ -143,6 +143,5 @@
 
     /* API: Validation stuff: */
-    void setValidator(UIPageValidator *pValidator);
-    bool revalidate(QString &strWarningText, QString &strTitle);
+    bool validate(QString &strWarningText, QString &strTitle);
 
     void setOrderAfter (QWidget *aWidget);
@@ -167,4 +166,7 @@
 private:
 
+    /* Helper: Prepare stuff: */
+    void prepareValidation();
+
     void addUSBFilter(const UIDataSettingsMachineUSBFilter &usbFilterData, bool fIsNew);
 
@@ -179,7 +181,4 @@
 
     void polishPage();
-
-    /* Variable: Validation stuff: */
-    UIPageValidator *m_pValidator;
 
     /* Global data source: */
