Index: trunk/src/VBox/Frontends/VirtualBox/src/settings/UIAdvancedSettingsDialog.cpp
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/settings/UIAdvancedSettingsDialog.cpp	(revision 101692)
+++ trunk/src/VBox/Frontends/VirtualBox/src/settings/UIAdvancedSettingsDialog.cpp	(revision 101693)
@@ -928,4 +928,8 @@
             /* Remember page-frame for referencing: */
             m_frames[cId] = pFrame;
+
+            /* Notify about frame visibility changes: */
+            connect(pFrame, &UISettingsPageFrame::sigVisibilityChange,
+                    this, &UIAdvancedSettingsDialog::sltHandleFrameVisibilityChange);
         }
     }
@@ -1091,4 +1095,15 @@
     foreach (UISettingsPageFrame *pFrame, m_frames.values())
         pFrame->filterOut(m_pCheckBoxMode->isChecked(), m_pEditorFilter->text());
+}
+
+void UIAdvancedSettingsDialog::sltHandleFrameVisibilityChange(bool fVisible)
+{
+    /* Acquire frame: */
+    UISettingsPageFrame *pFrame = qobject_cast<UISettingsPageFrame*>(sender());
+    AssertPtrReturnVoid(pFrame);
+
+    /* Update selector item visibility: */
+    const int iId = m_frames.key(pFrame);
+    m_pSelector->setItemVisible(iId, fVisible);
 }
 
Index: trunk/src/VBox/Frontends/VirtualBox/src/settings/UIAdvancedSettingsDialog.h
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/settings/UIAdvancedSettingsDialog.h	(revision 101692)
+++ trunk/src/VBox/Frontends/VirtualBox/src/settings/UIAdvancedSettingsDialog.h	(revision 101693)
@@ -200,4 +200,6 @@
     /** Handles changes done to mode checkbox or filter editor. */
     void sltHandleModeOrFilterChanged();
+    /** Handles frame visivility changes. */
+    void sltHandleFrameVisibilityChange(bool fVisible);
 
 private:
Index: trunk/src/VBox/Frontends/VirtualBox/src/settings/UISettingsSelector.cpp
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/settings/UISettingsSelector.cpp	(revision 101692)
+++ trunk/src/VBox/Frontends/VirtualBox/src/settings/UISettingsSelector.cpp	(revision 101693)
@@ -144,4 +144,9 @@
     virtual void setText(const QString &strText) { m_strText = strText; }
 
+    /** Returns whether item is hidden. */
+    virtual bool isHidden() const { return m_fHidden; }
+    /** Defines item is @a fHidden. */
+    virtual void setHidden(bool fHidden) { m_fHidden = fHidden; }
+
     /** Returns the number of children. */
     virtual int childCount() const RT_OVERRIDE { return m_children.size(); }
@@ -171,4 +176,6 @@
     /** Holds the item text. */
     QString  m_strText;
+    /** Holds whether item is hidden. */
+    bool     m_fHidden;
 
     /** Holds the list of children. */
@@ -213,4 +220,5 @@
         R_ItemName,
         R_ItemNamePoint,
+        R_ItemHidden,
     };
 
@@ -392,4 +400,5 @@
 UISelectorTreeViewItem::UISelectorTreeViewItem(QITreeView *pParent)
     : QITreeViewItem(pParent)
+    , m_fHidden(false)
 {
 }
@@ -403,4 +412,5 @@
     , m_icon(icon)
     , m_strLink(strLink)
+    , m_fHidden(false)
 {
     if (pParentItem)
@@ -657,4 +667,10 @@
                           sizeHint.height() / 2 + fm.ascent() / 2 - 1 /* base line */);
         }
+        case R_ItemHidden:
+        {
+            if (UISelectorTreeViewItem *pItem = indexToItem(specifiedIndex))
+                return pItem->isHidden() ? "hide" : "show";
+            return QString();
+        }
 
         default:
@@ -678,4 +694,14 @@
             {
                 pItem->setText(aValue.toString());
+                emit dataChanged(specifiedIndex, specifiedIndex);
+                return true;
+            }
+            return false;
+        }
+        case R_ItemHidden:
+        {
+            if (UISelectorTreeViewItem *pItem = indexToItem(specifiedIndex))
+            {
+                pItem->setHidden(aValue.toBool());
                 emit dataChanged(specifiedIndex, specifiedIndex);
                 return true;
@@ -941,4 +967,12 @@
 }
 
+void UISettingsSelectorTreeView::setItemVisible(int iID, bool fVisible)
+{
+    /* Look for the tree-view item to assign the text: */
+    QModelIndex specifiedIndex = m_pModel->findItem(iID);
+    if (specifiedIndex.isValid())
+        m_pModel->setData(specifiedIndex, !fVisible, UISelectorModel::R_ItemHidden);
+}
+
 void UISettingsSelectorTreeView::setItemText(int iID, const QString &strText)
 {
@@ -1015,4 +1049,6 @@
                 /* Configure proxy-model: */
                 m_pModelProxy->setSortRole(UISelectorModel::R_ItemId);
+                m_pModelProxy->setFilterRole(UISelectorModel::R_ItemHidden);
+                m_pModelProxy->setFilterFixedString("show");
                 m_pModelProxy->setSourceModel(m_pModel);
                 m_pTreeView->setModel(m_pModelProxy);
Index: trunk/src/VBox/Frontends/VirtualBox/src/settings/UISettingsSelector.h
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/settings/UISettingsSelector.h	(revision 101692)
+++ trunk/src/VBox/Frontends/VirtualBox/src/settings/UISettingsSelector.h	(revision 101693)
@@ -86,4 +86,7 @@
                              int iID, const QString &strLink, UISettingsPage *pPage = 0, int iParentID = -1) = 0;
 
+    /** Defines whether section with @a iID is @a fVisible. */
+    virtual void setItemVisible(int iID, bool fVisible) { Q_UNUSED(iID); Q_UNUSED(fVisible); }
+
     /** Defines the @a strText for section with @a iID. */
     virtual void setItemText(int iID, const QString &strText);
@@ -158,4 +161,7 @@
                              int iID, const QString &strLink, UISettingsPage *pPage = 0, int iParentID = -1) RT_OVERRIDE;
 
+    /** Defines whether section with @a iID is @a fVisible. */
+    virtual void setItemVisible(int iID, bool fVisible) RT_OVERRIDE;
+
     /** Defines the @a strText for section with @a iID. */
     virtual void setItemText(int iID, const QString &strText) RT_OVERRIDE;
Index: trunk/src/VBox/Frontends/VirtualBox/src/settings/editors/UIEditor.cpp
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/settings/editors/UIEditor.cpp	(revision 101692)
+++ trunk/src/VBox/Frontends/VirtualBox/src/settings/editors/UIEditor.cpp	(revision 101693)
@@ -105,5 +105,10 @@
     /* Otherwise update widget visibility usual way: */
     else
+    {
+        const bool fVisibilityChanged = isVisible() != fVisible;
         setVisible(fVisible);
+        if (fVisibilityChanged)
+            emit sigVisibilityChange(fVisible);
+    }
 
     /* Finally make sure layouts are freshly
Index: trunk/src/VBox/Frontends/VirtualBox/src/settings/editors/UIEditor.h
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/settings/editors/UIEditor.h	(revision 101692)
+++ trunk/src/VBox/Frontends/VirtualBox/src/settings/editors/UIEditor.h	(revision 101693)
@@ -43,4 +43,9 @@
     Q_OBJECT;
 
+signals:
+
+    /** Notifies listeners about visibility changes. */
+    void sigVisibilityChange(bool fVisible);
+
 public:
 
