Index: /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIActionPoolManager.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIActionPoolManager.cpp	(revision 83615)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIActionPoolManager.cpp	(revision 83616)
@@ -2827,5 +2827,5 @@
 
 /** Toggle action extension, used as 'Toggle Columns' action class. */
-class UIActionMenuSelectorVMResourceMonitorToggleColumns : public UIActionToggle
+class UIActionMenuSelectorVMResourceMonitorToggleColumns : public UIActionMenu
 {
     Q_OBJECT;
@@ -2835,33 +2835,16 @@
     /** Constructs action passing @a pParent to the base-class. */
     UIActionMenuSelectorVMResourceMonitorToggleColumns(UIActionPool *pParent)
-        : UIActionToggle(pParent)
-    {
-        setShortcutContext(Qt::WidgetWithChildrenShortcut);
-        setIcon(UIIconPool::iconSetFull(":/cloud_profile_edit_32px.png",          ":/cloud_profile_edit_16px.png",
-                                        ":/cloud_profile_edit_disabled_32px.png", ":/cloud_profile_edit_disabled_16px.png"));
-    }
-
-protected:
-
-    /** Returns shortcut extra-data ID. */
-    virtual QString shortcutExtraDataID() const /* override */
-    {
-        return QString("ToggleVMResourceMonitorColumns");
-    }
-
-    /** Returns default shortcut. */
-    virtual QKeySequence defaultShortcut(UIActionPoolType) const /* override */
-    {
-        return QKeySequence();
-    }
-
-    /** Handles translation event. */
-    virtual void retranslateUi() /* override */
-    {
+        : UIActionMenu(pParent, ":/exit_16px.png")
+    {}
+
+protected:
+
+    /** Handles translation event. */
+    virtual void retranslateUi() /* override */
+    {
+        setName(QApplication::translate("UIActionPool", "Columns"));
         setIconText(QApplication::translate("UIActionPool", "Columns"));
-        setName(QApplication::translate("UIActionPool", "Add Remove Columns"));
-        //setShortcutScope(QApplication::translate("UIActionPool", "Cloud Profile Manager"));
-        setStatusTip(QApplication::translate("UIActionPool", "Open context menu to disable/menu table columns"));
-        setToolTip(  QApplication::translate("UIActionPool", "Open context menu to disable/menu table columns")
+        setStatusTip(QApplication::translate("UIActionPool", "Show/Hide Columns"));
+        setToolTip(  QApplication::translate("UIActionPool", "Show/Hide Columns")
                    + (shortcut().isEmpty() ? QString() : QString(" (%1)").arg(shortcut().toString())));
     }
@@ -3007,5 +2990,5 @@
     /* VM resource Monitor actions: */
     m_pool[UIActionIndexST_M_VMResourceMonitor] = new UIActionMenuVMResourceMonitor(this);
-    m_pool[UIActionIndexST_M_VMResourceMonitor_T_Columns] = new UIActionMenuSelectorVMResourceMonitorToggleColumns(this);
+    m_pool[UIActionIndexST_M_VMResourceMonitor_M_Columns] = new UIActionMenuSelectorVMResourceMonitorToggleColumns(this);
 
     /* 'Group' action groups: */
@@ -3605,6 +3588,5 @@
     /* Clear contents: */
     pMenu->clear();
-
-    addAction(pMenu, action(UIActionIndexST_M_VMResourceMonitor_T_Columns));
+    addAction(pMenu, action(UIActionIndexST_M_VMResourceMonitor_M_Columns));
 }
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIActionPoolManager.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIActionPoolManager.h	(revision 83615)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIActionPoolManager.h	(revision 83616)
@@ -166,5 +166,5 @@
     /* VM resource Monitor actions: */
     UIActionIndexST_M_VMResourceMonitor,
-    UIActionIndexST_M_VMResourceMonitor_T_Columns,
+    UIActionIndexST_M_VMResourceMonitor_M_Columns,
 
     /* Maximum index: */
Index: /trunk/src/VBox/Frontends/VirtualBox/src/manager/UIVirtualBoxManagerWidget.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/manager/UIVirtualBoxManagerWidget.cpp	(revision 83615)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/manager/UIVirtualBoxManagerWidget.cpp	(revision 83616)
@@ -20,4 +20,5 @@
 #include <QStackedWidget>
 #include <QStyle>
+#include <QToolButton>
 #include <QVBoxLayout>
 
@@ -672,5 +673,13 @@
                 case UIToolType_VMResourceMonitor:
                 {
-                    m_pToolBar->addAction(actionPool()->action(UIActionIndexST_M_VMResourceMonitor_T_Columns));
+                    m_pToolBar->addAction(actionPool()->action(UIActionIndexST_M_VMResourceMonitor_M_Columns));
+                    QToolButton *pButton =
+                        qobject_cast<QToolButton*>(m_pToolBar->widgetForAction(actionPool()->action(UIActionIndexST_M_VMResourceMonitor_M_Columns)));
+                    if (pButton)
+                    {
+                        pButton->setPopupMode(QToolButton::InstantPopup);
+                        pButton->setAutoRaise(true);
+                    }
+
                     break;
                 }
Index: /trunk/src/VBox/Frontends/VirtualBox/src/monitor/resource/UIResourceMonitor.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/monitor/resource/UIResourceMonitor.cpp	(revision 83615)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/monitor/resource/UIResourceMonitor.cpp	(revision 83616)
@@ -274,15 +274,4 @@
     UIResourceMonitorProxyModel(QObject *parent = 0);
     void dataUpdate();
-    void reFilter();
-
-protected:
-
-    //virtual bool lessThan(const QModelIndex &left, const QModelIndex &right) const /* override */;
-    /** Section (column) visibility is controlled by the QHeaderView (see UIVMResourceMonitorTableView::updateColumVisibility)
-     *  to have somewhat meaningful column resizing. */
-    //virtual bool filterAcceptsColumn(int source_column, const QModelIndex &source_parent) const /* override */;
-
-private:
-
 };
 
@@ -331,5 +320,5 @@
     /* Used to find machines by uid. key is the machine uid and int is the index to m_itemList */
     QMap<QUuid, int>               m_itemMap;
-    QMap<int, QString> m_columnCaptions;
+    QMap<int, QString> m_columnTitles;
     QTimer *m_pTimer;
     /** @name The following are used during UIPerformanceCollector::QueryMetricsData(..)
@@ -868,21 +857,4 @@
 }
 
-void UIResourceMonitorProxyModel::reFilter()
-{
-    emit layoutAboutToBeChanged();
-    invalidateFilter();
-    emit layoutChanged();
-}
-
-/* See the function definition comment: */
-// bool UIResourceMonitorProxyModel::filterAcceptsColumn(int iSourceColumn, const QModelIndex &sourceParent) const
-// {
-//     Q_UNUSED(sourceParent);
-//     UIResourceMonitorModel* pModel = qobject_cast<UIResourceMonitorModel*>(sourceModel());
-//     if (!pModel)
-//         return true;
-//     return pModel->columnVisible(iSourceColumn);
-// }
-
 
 /*********************************************************************************************************************************
@@ -945,5 +917,5 @@
 {
     if (role == Qt::DisplayRole && orientation == Qt::Horizontal)
-        return m_columnCaptions.value((VMResourceMonitorColumn)section, QString());;
+        return m_columnTitles.value((VMResourceMonitorColumn)section, QString());;
     return QVariant();
 }
@@ -951,5 +923,5 @@
 void UIResourceMonitorModel::setColumnCaptions(const QMap<int, QString>& captions)
 {
-    m_columnCaptions = captions;
+    m_columnTitles = captions;
 }
 
@@ -1005,6 +977,4 @@
     ULONG aPctVMM;
 
-    // bool fRAMColumns = columnVisible(VMResourceMonitorColumn_RAMUsedAndTotal)
-    //     || columnVisible(VMResourceMonitorColumn_RAMUsedPercentage);
     bool fCPUColumns = columnVisible(VMResourceMonitorColumn_CPUVMMLoad) || columnVisible(VMResourceMonitorColumn_CPUGuestLoad);
     bool fNetworkColumns = columnVisible(VMResourceMonitorColumn_NetworkUpRate)
@@ -1018,8 +988,8 @@
     bool fVMExitColumn = columnVisible(VMResourceMonitorColumn_VMExits);
 
+    /* Host's RAM usage is obtained from IHost not from IPerformanceCollectior: */
     getHostRAMStats();
 
-    /* RAM usage and Host CPU: */
-    //if (!m_performanceMonitor.isNull() && fRAMColumns)
+    /* RAM usage and Host Stats: */
     queryPerformanceCollector();
 
@@ -1275,5 +1245,4 @@
     , m_fIsCurrentTool(true)
 {
-    /* Prepare: */
     prepare();
 }
@@ -1308,20 +1277,20 @@
 void UIResourceMonitorWidget::retranslateUi()
 {
-    m_columnCaptions[VMResourceMonitorColumn_Name] = tr("VM Name");
-    m_columnCaptions[VMResourceMonitorColumn_CPUGuestLoad] = tr("CPU Guest");
-    m_columnCaptions[VMResourceMonitorColumn_CPUVMMLoad] = tr("CPU VMM");
-    m_columnCaptions[VMResourceMonitorColumn_RAMUsedAndTotal] = tr("RAM Used/Total");
-    m_columnCaptions[VMResourceMonitorColumn_RAMUsedPercentage] = tr("RAM %");
-    m_columnCaptions[VMResourceMonitorColumn_NetworkUpRate] = tr("Network Up Rate");
-    m_columnCaptions[VMResourceMonitorColumn_NetworkDownRate] = tr("Network Down Rate");
-    m_columnCaptions[VMResourceMonitorColumn_NetworkUpTotal] = tr("Network Up Total");
-    m_columnCaptions[VMResourceMonitorColumn_NetworkDownTotal] = tr("Network Down Total");
-    m_columnCaptions[VMResourceMonitorColumn_DiskIOReadRate] = tr("Disk Read Rate");
-    m_columnCaptions[VMResourceMonitorColumn_DiskIOWriteRate] = tr("Disk Write Rate");
-    m_columnCaptions[VMResourceMonitorColumn_DiskIOReadTotal] = tr("Disk Read Total");
-    m_columnCaptions[VMResourceMonitorColumn_DiskIOWriteTotal] = tr("Disk Write Total");
-    m_columnCaptions[VMResourceMonitorColumn_VMExits] = tr("VM Exits");
+    m_columnTitles[VMResourceMonitorColumn_Name] = tr("VM Name");
+    m_columnTitles[VMResourceMonitorColumn_CPUGuestLoad] = tr("CPU Guest");
+    m_columnTitles[VMResourceMonitorColumn_CPUVMMLoad] = tr("CPU VMM");
+    m_columnTitles[VMResourceMonitorColumn_RAMUsedAndTotal] = tr("RAM Used/Total");
+    m_columnTitles[VMResourceMonitorColumn_RAMUsedPercentage] = tr("RAM %");
+    m_columnTitles[VMResourceMonitorColumn_NetworkUpRate] = tr("Network Up Rate");
+    m_columnTitles[VMResourceMonitorColumn_NetworkDownRate] = tr("Network Down Rate");
+    m_columnTitles[VMResourceMonitorColumn_NetworkUpTotal] = tr("Network Up Total");
+    m_columnTitles[VMResourceMonitorColumn_NetworkDownTotal] = tr("Network Down Total");
+    m_columnTitles[VMResourceMonitorColumn_DiskIOReadRate] = tr("Disk Read Rate");
+    m_columnTitles[VMResourceMonitorColumn_DiskIOWriteRate] = tr("Disk Write Rate");
+    m_columnTitles[VMResourceMonitorColumn_DiskIOReadTotal] = tr("Disk Read Total");
+    m_columnTitles[VMResourceMonitorColumn_DiskIOWriteTotal] = tr("Disk Write Total");
+    m_columnTitles[VMResourceMonitorColumn_VMExits] = tr("VM Exits");
     if (m_pModel)
-        m_pModel->setColumnCaptions(m_columnCaptions);
+        m_pModel->setColumnCaptions(m_columnTitles);
     computeMinimumColumnWidths();
 }
@@ -1341,5 +1310,4 @@
     QIWithRetranslateUI<QWidget>::paintEvent(pEvent);
 }
-
 
 void UIResourceMonitorWidget::prepare()
@@ -1381,13 +1349,8 @@
     {
         layout()->addWidget(m_pTableView);
-        // m_pTableView->setContextMenuPolicy(Qt::CustomContextMenu);
-        // connect(m_pTableView, &QTableView::customContextMenuRequested,
-        //         this, &UIResourceMonitorWidget::sltCreateContextMenu);
         m_pProxyModel->setSourceModel(m_pModel);
         m_pTableView->setModel(m_pProxyModel);
         m_pTableView->setItemDelegate(new UIVMResourceMonitorDelegate);
         m_pTableView->setSelectionMode(QAbstractItemView::NoSelection);
-        /* m_pTableView->setSelectionMode(QAbstractItemView::SingleSelection);
-           m_pTableView->setSelectionBehavior(QAbstractItemView::SelectRows);*/
         m_pTableView->setShowGrid(false);
         m_pTableView->horizontalHeader()->setHighlightSections(false);
@@ -1408,40 +1371,21 @@
 void UIResourceMonitorWidget::prepareActions()
 {
-    m_pColumnVisibilityToggleMenu = new QMenu(this);
+    if (!m_pActionPool->action(UIActionIndexST_M_VMResourceMonitor_M_Columns))
+        return;
+    UIMenu *pMenu = m_pActionPool->action(UIActionIndexST_M_VMResourceMonitor_M_Columns)->menu();
+    if (!pMenu)
+        return;
+
     for (int i = 0; i < VMResourceMonitorColumn_Max; ++i)
     {
-        QAction *pAction = m_pColumnVisibilityToggleMenu->addAction(m_columnCaptions[i]);
+        QAction *pAction = pMenu->addAction(m_columnTitles[i]);
         pAction->setCheckable(true);
-    }
-
-    connect(m_pActionPool->action(UIActionIndexST_M_VMResourceMonitor_T_Columns), &QAction::toggled,
-            this, &UIResourceMonitorWidget::sltToggleColumnSelectionMenu);
+        if (i == (int)VMResourceMonitorColumn_Name)
+            pAction->setEnabled(false);
+        pAction->setData(i);
+        pAction->setChecked(columnVisible(i));
+        connect(pAction, &QAction::toggled, this, &UIResourceMonitorWidget::sltHandleColumnAction);
+    }
     return;
-//     m_pColumnSelectionMenu->setAutoFillBackground(true);
-//     m_pColumnSelectionMenu->setFrameStyle(QFrame::Panel | QFrame::Plain);
-//     m_pColumnSelectionMenu->hide();
-//     QVBoxLayout* pLayout = new QVBoxLayout(m_pColumnSelectionMenu);
-//     int iLength = 0;
-//     for (int i = 0; i < VMResourceMonitorColumn_Max; ++i)
-//     {
-//         UIVMResourceMonitorCheckBox* pCheckBox = new UIVMResourceMonitorCheckBox;
-//         QString strCaption = m_columnCaptions.value((VMResourceMonitorColumn)i, QString());
-//         pCheckBox->setText(strCaption);
-//         iLength = strCaption.length() > iLength ? strCaption.length() : iLength;
-//         if (!pCheckBox)
-//             continue;
-//         pLayout->addWidget(pCheckBox);
-//         pCheckBox->setData(i);
-//         pCheckBox->setChecked(columnVisible(i));
-//         if (i == (int)VMResourceMonitorColumn_Name)
-//             pCheckBox->setEnabled(false);
-//         connect(pCheckBox, &UIVMResourceMonitorCheckBox::toggled, this, &UIResourceMonitorWidget::sltHandleColumnAction);
-//     }
-//     QFontMetrics fontMetrics(m_pColumnSelectionMenu->font());
-//     int iWidth = iLength * fontMetrics.width('x') +
-//         QApplication::style()->pixelMetric(QStyle::PM_IndicatorWidth) +
-//         2 * QApplication::style()->pixelMetric(QStyle::PM_LayoutLeftMargin) +
-//         2 * QApplication::style()->pixelMetric(QStyle::PM_LayoutRightMargin);
-//     m_pColumnSelectionMenu->setFixedWidth(iWidth);
 }
 
@@ -1501,25 +1445,9 @@
         return;
     m_pColumnVisibilityToggleMenu->exec(this->mapToGlobal(QPoint(0,0)));
-
-    // if (!m_pColumnSelectionMenu)
-    //     return;
-    // m_pColumnSelectionMenu->setVisible(fChecked);
-
-    // if (fChecked)
-    // {
-    //     m_pColumnSelectionMenu->move(0, 0);
-    //     m_pColumnSelectionMenu->raise();
-    //     m_pColumnSelectionMenu->resize(400, 400);
-    //     m_pColumnSelectionMenu->show();
-    //     m_pColumnSelectionMenu->setFocus();
-    // }
-    // else
-    //     m_pColumnSelectionMenu->hide();
-    //update();
 }
 
 void UIResourceMonitorWidget::sltHandleColumnAction(bool fChecked)
 {
-    UIVMResourceMonitorCheckBox* pSender = qobject_cast<UIVMResourceMonitorCheckBox*>(sender());
+    QAction* pSender = qobject_cast<QAction*>(sender());
     if (!pSender)
         return;
@@ -1568,5 +1496,5 @@
     {
         int iColumnStringWidth = columnDataStringLengths.value(i, 0);
-        int iColumnTitleWidth = m_columnCaptions.value(i, QString()).length();
+        int iColumnTitleWidth = m_columnTitles.value(i, QString()).length();
         int iMax = iColumnStringWidth > iColumnTitleWidth ? iColumnStringWidth : iColumnTitleWidth;
         columnWidthsInPixels[i] = iMax * fontMetrics.width('x') +
Index: /trunk/src/VBox/Frontends/VirtualBox/src/monitor/resource/UIResourceMonitor.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/monitor/resource/UIResourceMonitor.h	(revision 83615)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/monitor/resource/UIResourceMonitor.h	(revision 83616)
@@ -118,5 +118,5 @@
         QMenu                              *m_pColumnVisibilityToggleMenu;
         /* The key is the column id (VMResourceMonitorColumn) and value is column title. */
-        QMap<int, QString>                  m_columnCaptions;
+        QMap<int, QString>                  m_columnTitles;
         /* The key is the column id (VMResourceMonitorColumn) and value is true if the column is visible. */
         QMap<int, bool>                     m_columnVisible;
