Index: trunk/src/VBox/Frontends/VirtualBox/src/settings/UISettingsDialogSpecific.cpp
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/settings/UISettingsDialogSpecific.cpp	(revision 37124)
+++ trunk/src/VBox/Frontends/VirtualBox/src/settings/UISettingsDialogSpecific.cpp	(revision 37126)
@@ -193,8 +193,5 @@
             /* If such page present we should fetch internal page cache: */
             if (m_pages.contains(iPageId))
-            {
                 m_pages[iPageId]->getFromCache();
-                m_pages[iPageId]->polishPage();
-            }
         }
         /* If thats the page we are waiting for,
Index: trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsAudio.cpp
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsAudio.cpp	(revision 37124)
+++ trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsAudio.cpp	(revision 37126)
@@ -70,4 +70,7 @@
     mCbAudioDriver->setCurrentIndex(mCbAudioDriver->findText(vboxGlobal().toString(audioData.m_audioDriverType)));
     mCbAudioController->setCurrentIndex(mCbAudioController->findText(vboxGlobal().toString(audioData.m_audioControllerType)));
+
+    /* Polish page finally: */
+    polishPage();
 }
 
Index: trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsDisplay.cpp
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsDisplay.cpp	(revision 37124)
+++ trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsDisplay.cpp	(revision 37126)
@@ -197,8 +197,6 @@
     /* Load display data to page: */
     mSlMonitors->setValue(displayData.m_cMonitorCount);
-    mCb3D->setEnabled(vboxGlobal().virtualBox().GetHost().GetAcceleration3DAvailable());
     mCb3D->setChecked(displayData.m_f3dAccelerationEnabled);
 #ifdef VBOX_WITH_VIDEOHWACCEL
-    mCb2DVideo->setEnabled(VBoxGlobal::isAcceleration2DVideoAvailable());
     mCb2DVideo->setChecked(displayData.m_f2dAccelerationEnabled);
 #endif /* VBOX_WITH_VIDEOHWACCEL */
@@ -216,6 +214,10 @@
         mTwDisplay->removeTab(1);
 
+    /* Polish page finally: */
+    polishPage();
+
     /* Revalidate if possible: */
-    if (mValidator) mValidator->revalidate();
+    if (mValidator)
+        mValidator->revalidate();
 }
 
@@ -474,7 +476,7 @@
     mLeMonitors->setEnabled(isMachineOffline());
     mLbOptions->setEnabled(isMachineOffline());
-    mCb3D->setEnabled(isMachineOffline());
-#ifdef VBOX_WITH_VIDEOHWACCEL
-    mCb2DVideo->setEnabled(isMachineOffline());
+    mCb3D->setEnabled(isMachineOffline() && vboxGlobal().virtualBox().GetHost().GetAcceleration3DAvailable());
+#ifdef VBOX_WITH_VIDEOHWACCEL
+    mCb2DVideo->setEnabled(isMachineOffline() && VBoxGlobal::isAcceleration2DVideoAvailable());
 #endif /* VBOX_WITH_VIDEOHWACCEL */
     /* VRDE tab: */
Index: trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsGeneral.cpp
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsGeneral.cpp	(revision 37124)
+++ trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsGeneral.cpp	(revision 37126)
@@ -115,5 +115,4 @@
     mCbShowToolBar->setChecked(generalData.m_fShowMiniToolBar);
     mCbToolBarAlignment->setChecked(generalData.m_fMiniToolBarAtTop);
-    mCbToolBarAlignment->setEnabled(mCbShowToolBar->isChecked());
     mPsSnapshot->setPath(generalData.m_strSnapshotsFolder);
     mPsSnapshot->setHomeDir(generalData.m_strSnapshotsHomeDir);
@@ -121,6 +120,10 @@
     mTeDescription->setPlainText(generalData.m_strDescription);
 
+    /* Polish page finally: */
+    polishPage();
+
     /* Revalidate if possible: */
-    if (mValidator) mValidator->revalidate();
+    if (mValidator)
+        mValidator->revalidate();
 }
 
@@ -245,5 +248,5 @@
     mLbToolBar->setEnabled(isMachineInValidMode());
     mCbShowToolBar->setEnabled(isMachineInValidMode());
-    mCbToolBarAlignment->setEnabled(mCbShowToolBar->isChecked() && isMachineInValidMode());
-}
-
+    mCbToolBarAlignment->setEnabled(isMachineInValidMode() && mCbShowToolBar->isChecked());
+}
+
Index: trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsNetwork.cpp
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsNetwork.cpp	(revision 37124)
+++ trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsNetwork.cpp	(revision 37126)
@@ -87,4 +87,7 @@
     m_pMACEditor->setEnabled(m_pParent->isMachineOffline());
     m_pMACButton->setEnabled(m_pParent->isMachineOffline());
+
+    m_pPortForwardingButton->setEnabled(m_pParent->isMachineInValidMode() &&
+                                        attachmentType() == KNetworkAttachmentType_NAT);
 
     /* Postprocessing: */
@@ -856,6 +859,10 @@
     retranslateUi();
 
+    /* Polish page finally: */
+    polishPage();
+
     /* Revalidate if possible: */
-    if (m_pValidator) m_pValidator->revalidate();
+    if (m_pValidator)
+        m_pValidator->revalidate();
 }
 
Index: trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsParallel.cpp
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsParallel.cpp	(revision 37124)
+++ trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsParallel.cpp	(revision 37126)
@@ -260,6 +260,10 @@
     retranslateUi();
 
+    /* Polish page finally: */
+    polishPage();
+
     /* Revalidate if possible: */
-    if (mValidator) mValidator->revalidate();
+    if (mValidator)
+        mValidator->revalidate();
 }
 
Index: trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsSF.cpp
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsSF.cpp	(revision 37124)
+++ trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsSF.cpp	(revision 37126)
@@ -295,4 +295,7 @@
     mTwFolders->setCurrentItem(mTwFolders->topLevelItem(0));
     processCurrentChanged(mTwFolders->currentItem());
+
+    /* Polish page finally: */
+    polishPage();
 }
 
@@ -521,18 +524,19 @@
 }
 
-void UIMachineSettingsSF::showContextMenu (const QPoint &aPos)
+void UIMachineSettingsSF::showContextMenu(const QPoint &pos)
 {
     QMenu menu;
-    QTreeWidgetItem *item = mTwFolders->itemAt (aPos);
-    if (item && item->flags() & Qt::ItemIsSelectable)
-    {
-        menu.addAction (mEdtAction);
-        menu.addAction (mDelAction);
+    QTreeWidgetItem *pItem = mTwFolders->itemAt(pos);
+    if (mTwFolders->isEnabled() && pItem && pItem->flags() & Qt::ItemIsSelectable)
+    {
+        menu.addAction(mEdtAction);
+        menu.addAction(mDelAction);
     }
     else
     {
-        menu.addAction (mNewAction);
-    }
-    menu.exec (mTwFolders->viewport()->mapToGlobal (aPos));
+        menu.addAction(mNewAction);
+    }
+    if (!menu.isEmpty())
+        menu.exec(mTwFolders->viewport()->mapToGlobal(pos));
 }
 
@@ -694,4 +698,9 @@
 void UIMachineSettingsSF::polishPage()
 {
+    /* Update widgets availability: */
+    mNameSeparator->setEnabled(isMachineInValidMode());
+    mTwFolders->setEnabled(isMachineInValidMode());
+    mTbFolders->setEnabled(isMachineInValidMode());
+
     /* Update root items visibility: */
     updateRootItemsVisibility();
Index: trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsSerial.cpp
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsSerial.cpp	(revision 37124)
+++ trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsSerial.cpp	(revision 37126)
@@ -296,6 +296,10 @@
     retranslateUi();
 
+    /* Polish page finally: */
+    polishPage();
+
     /* Revalidate if possible: */
-    if (mValidator) mValidator->revalidate();
+    if (mValidator)
+        mValidator->revalidate();
 }
 
Index: trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsStorage.cpp
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsStorage.cpp	(revision 37124)
+++ trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsStorage.cpp	(revision 37126)
@@ -1910,6 +1910,10 @@
     updateActionsState();
 
+    /* Polish page finally: */
+    polishPage();
+
     /* Revalidate if possible: */
-    if (mValidator) mValidator->revalidate();
+    if (mValidator)
+        mValidator->revalidate();
 }
 
@@ -3440,14 +3444,16 @@
 void UIMachineSettingsStorage::setDialogType(SettingsDialogType settingsDialogType)
 {
+    /* Update model 'settings dialog type': */
+    mStorageModel->setDialogType(settingsDialogType);
     /* Update 'settings dialog type' of base class: */
     UISettingsPageMachine::setDialogType(settingsDialogType);
-    /* Update model 'settings dialog type': */
-    mStorageModel->setDialogType(dialogType());
-    /* Update action states: */
-    updateActionsState();
 }
 
 void UIMachineSettingsStorage::polishPage()
 {
+    /* Declare required variables: */
+    QModelIndex index = mTwStorageTree->currentIndex();
+    KDeviceType device = mStorageModel->data(index, StorageModel::R_AttDevice).value<KDeviceType>();
+
     /* Left pane: */
     mLsLeftPane->setEnabled(isMachineInValidMode());
@@ -3465,7 +3471,7 @@
     /* Attachments pane: */
     mLsAttributes->setEnabled(isMachineInValidMode());
-    mLbMedium->setEnabled(isMachineInValidMode());
+    mLbMedium->setEnabled(isMachineOffline() || (isMachineOnline() && device != KDeviceType_HardDisk));
     mCbSlot->setEnabled(isMachineOffline());
-    mTbOpen->setEnabled(isMachineInValidMode());
+    mTbOpen->setEnabled(isMachineOffline() || (isMachineOnline() && device != KDeviceType_HardDisk));
     mCbPassthrough->setEnabled(isMachineOffline());
     mLsInformation->setEnabled(isMachineInValidMode());
@@ -3484,4 +3490,7 @@
     mLbUsage->setEnabled(isMachineInValidMode());
     mLbUsageValue->setEnabled(isMachineInValidMode());
+
+    /* Update action states: */
+    updateActionsState();
 }
 
Index: trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsSystem.cpp
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsSystem.cpp	(revision 37124)
+++ trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsSystem.cpp	(revision 37126)
@@ -246,11 +246,6 @@
     mCbTCUseUTC->setChecked(systemData.m_fUTCEnabled);
     mCbUseAbsHID->setChecked(systemData.m_fUseAbsHID);
-    mSlCPU->setEnabled(systemData.m_fPFHwVirtExSupported);
-    mLeCPU->setEnabled(systemData.m_fPFHwVirtExSupported);
-    mCbPae->setEnabled(systemData.m_fPFPAESupported);
     mCbPae->setChecked(systemData.m_fPAEEnabled);
-    mCbVirt->setEnabled(systemData.m_fPFHwVirtExSupported);
     mCbVirt->setChecked(systemData.m_fHwVirtExEnabled);
-    mCbNestedPaging->setEnabled(systemData.m_fPFHwVirtExSupported && systemData.m_fHwVirtExEnabled);
     mCbNestedPaging->setChecked(systemData.m_fNestedPagingEnabled);
     mSlMemory->setValue(systemData.m_iRAMSize);
@@ -258,9 +253,11 @@
     int iChipsetPositionPos = mCbChipset->findData(systemData.m_chipsetType);
     mCbChipset->setCurrentIndex(iChipsetPositionPos == -1 ? 0 : iChipsetPositionPos);
-    if (!systemData.m_fPFHwVirtExSupported)
-        mTwSystem->removeTab(2);
+
+    /* Polish page finally: */
+    polishPage();
 
     /* Revalidate if possible: */
-    if (mValidator) mValidator->revalidate();
+    if (mValidator)
+        mValidator->revalidate();
 }
 
@@ -566,4 +563,7 @@
 void UIMachineSettingsSystem::polishPage()
 {
+    /* Get system data from cache: */
+    const UIDataSettingsMachineSystem &systemData = m_cache.base();
+
     /* Motherboard tab: */
     mLbMemory->setEnabled(isMachineOffline());
@@ -575,6 +575,6 @@
     mLbBootOrder->setEnabled(isMachineOffline());
     mTwBootOrder->setEnabled(isMachineOffline());
-    mTbBootItemUp->setEnabled(isMachineOffline());
-    mTbBootItemDown->setEnabled(isMachineOffline());
+    mTbBootItemUp->setEnabled(isMachineOffline() && mTwBootOrder->hasFocus() && mTwBootOrder->currentRow() > 0);
+    mTbBootItemDown->setEnabled(isMachineOffline() && mTwBootOrder->hasFocus() && (mTwBootOrder->currentRow() < mTwBootOrder->count() - 1));
     mLbChipset->setEnabled(isMachineOffline());
     mCbChipset->setEnabled(isMachineOffline());
@@ -588,12 +588,13 @@
     mLbCPUMin->setEnabled(isMachineOffline());
     mLbCPUMax->setEnabled(isMachineOffline());
-    mSlCPU->setEnabled(isMachineOffline());
-    mLeCPU->setEnabled(isMachineOffline());
+    mSlCPU->setEnabled(isMachineOffline() && systemData.m_fPFHwVirtExSupported);
+    mLeCPU->setEnabled(isMachineOffline() && systemData.m_fPFHwVirtExSupported);
     mLbProcessorExtended->setEnabled(isMachineOffline());
-    mCbPae->setEnabled(isMachineOffline());
+    mCbPae->setEnabled(isMachineOffline() && systemData.m_fPFPAESupported);
     /* Acceleration tab: */
+    mTwSystem->setTabEnabled(2, systemData.m_fPFHwVirtExSupported);
     mLbVirt->setEnabled(isMachineOffline());
     mCbVirt->setEnabled(isMachineOffline());
-    mCbNestedPaging->setEnabled(mCbVirt->isChecked() && isMachineOffline());
-}
-
+    mCbNestedPaging->setEnabled(isMachineOffline() && mCbVirt->isChecked());
+}
+
Index: trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsUSB.cpp
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsUSB.cpp	(revision 37124)
+++ trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsUSB.cpp	(revision 37126)
@@ -33,7 +33,8 @@
     : UISettingsPage(type)
     , mValidator(0)
+    , m_pToolBar(0)
     , mNewAction(0), mAddAction(0), mEdtAction(0), mDelAction(0)
     , mMupAction(0), mMdnAction(0)
-    , mMenu(0), mUSBDevicesMenu(0)
+    , mUSBDevicesMenu(0)
 {
     /* Apply UI decorations */
@@ -68,37 +69,25 @@
                                             ":/usb_movedown_disabled_16px.png"));
 
-    /* Prepare menu and toolbar */
-    mMenu = new QMenu (mTwFilters);
-    mMenu->addAction (mNewAction);
-    mMenu->addAction (mAddAction);
-    mMenu->addSeparator();
-    mMenu->addAction (mEdtAction);
-    mMenu->addSeparator();
-    mMenu->addAction (mDelAction);
-    mMenu->addSeparator();
-    mMenu->addAction (mMupAction);
-    mMenu->addAction (mMdnAction);
-
     /* Prepare toolbar */
-    UIToolBar *toolBar = new UIToolBar (mWtFilterHandler);
-    toolBar->setUsesTextLabel (false);
-    toolBar->setIconSize (QSize (16, 16));
-    toolBar->setOrientation (Qt::Vertical);
-    toolBar->addAction (mNewAction);
-    toolBar->addAction (mAddAction);
-    toolBar->addAction (mEdtAction);
-    toolBar->addAction (mDelAction);
-    toolBar->addAction (mMupAction);
-    toolBar->addAction (mMdnAction);
-    toolBar->setSizePolicy (QSizePolicy::Fixed, QSizePolicy::MinimumExpanding);
-    toolBar->updateGeometry();
+    m_pToolBar = new UIToolBar (mWtFilterHandler);
+    m_pToolBar->setUsesTextLabel (false);
+    m_pToolBar->setIconSize (QSize (16, 16));
+    m_pToolBar->setOrientation (Qt::Vertical);
+    m_pToolBar->addAction (mNewAction);
+    m_pToolBar->addAction (mAddAction);
+    m_pToolBar->addAction (mEdtAction);
+    m_pToolBar->addAction (mDelAction);
+    m_pToolBar->addAction (mMupAction);
+    m_pToolBar->addAction (mMdnAction);
+    m_pToolBar->setSizePolicy (QSizePolicy::Fixed, QSizePolicy::MinimumExpanding);
+    m_pToolBar->updateGeometry();
 #ifdef Q_WS_MAC
     /* On the Mac this has to be slightly higher, than what sizeHint returned.
      * No idea why. */
-    toolBar->setMinimumHeight(toolBar->sizeHint().height() + 4);
+    m_pToolBar->setMinimumHeight(m_pToolBar->sizeHint().height() + 4);
 #else
-    toolBar->setMinimumHeight(toolBar->sizeHint().height());
+    m_pToolBar->setMinimumHeight(m_pToolBar->sizeHint().height());
 #endif /* Q_WS_MAC */
-    mWtFilterHandler->layout()->addWidget (toolBar);
+    mWtFilterHandler->layout()->addWidget (m_pToolBar);
 
     /* Setup connections */
@@ -296,4 +285,7 @@
     /* Update page: */
     usbAdapterToggled(mGbUSB->isChecked());
+
+    /* Polish page finally: */
+    polishPage();
 
     /* Revalidate if possible: */
@@ -793,7 +785,21 @@
 }
 
-void UIMachineSettingsUSB::showContextMenu (const QPoint &aPos)
-{
-    mMenu->exec (mTwFilters->mapToGlobal (aPos));
+void UIMachineSettingsUSB::showContextMenu(const QPoint &pos)
+{
+    QMenu menu;
+    if (mTwFilters->isEnabled())
+    {
+        menu.addAction(mNewAction);
+        menu.addAction(mAddAction);
+        menu.addSeparator();
+        menu.addAction(mEdtAction);
+        menu.addSeparator();
+        menu.addAction(mDelAction);
+        menu.addSeparator();
+        menu.addAction(mMupAction);
+        menu.addAction(mMdnAction);
+    }
+    if (!menu.isEmpty())
+        menu.exec(mTwFilters->mapToGlobal(pos));
 }
 
@@ -914,7 +920,6 @@
 {
     mGbUSB->setEnabled(isMachineOffline());
-    mCbUSB2->setEnabled(isMachineOffline());
-    mGbUSBFilters->setEnabled(isMachineInValidMode());
-    mTwFilters->setEnabled(isMachineInValidMode());
-}
-
+    mUSBChild->setEnabled(isMachineInValidMode() && mGbUSB->isChecked());
+    mCbUSB2->setEnabled(isMachineOffline() && mGbUSB->isChecked());
+}
+
Index: trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsUSB.h
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsUSB.h	(revision 37124)
+++ trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsUSB.h	(revision 37126)
@@ -25,4 +25,5 @@
 
 class VBoxUSBMenu;
+class UIToolBar;
 
 /* Common settings / USB page / USB filter data: */
@@ -156,5 +157,5 @@
     void mupClicked();
     void mdnClicked();
-    void showContextMenu (const QPoint &aPos);
+    void showContextMenu(const QPoint &pos);
     void sltUpdateActivityState(QTreeWidgetItem *pChangedItem);
 
@@ -184,4 +185,5 @@
     /* Other variables: */
     QIWidgetValidator *mValidator;
+    UIToolBar *m_pToolBar;
     QAction *mNewAction;
     QAction *mAddAction;
@@ -190,5 +192,4 @@
     QAction *mMupAction;
     QAction *mMdnAction;
-    QMenu *mMenu;
     VBoxUSBMenu *mUSBDevicesMenu;
     QString mUSBFilterName;
