Index: /trunk/src/VBox/Frontends/VirtualBox/src/runtime/information/UIInformationRuntime.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/runtime/information/UIInformationRuntime.cpp	(revision 85890)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/runtime/information/UIInformationRuntime.cpp	(revision 85891)
@@ -17,6 +17,9 @@
 
 /* Qt includes: */
+#include <QAction>
 #include <QApplication>
+#include <QClipboard>
 #include <QHeaderView>
+#include <QMenu>
 #include <QVBoxLayout>
 #include <QTableWidget>
@@ -70,4 +73,5 @@
     void updateClipboardMode(KClipboardMode enmMode = KClipboardMode_Max);
     void updateDnDMode(KDnDMode enmMode = KDnDMode_Max);
+    QString tableData();
 
 protected:
@@ -143,4 +147,5 @@
     , m_pTimer(0)
 {
+    setContextMenuPolicy(Qt::CustomContextMenu);
     setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
     setAlternatingRowColors(true);
@@ -411,4 +416,25 @@
 }
 
+QString UIRuntimeInfoWidget::tableData()
+{
+    QStringList stringData;
+    for (int i = 0; i < rowCount(); ++i)
+    {
+        /* Skip the first column as it is used for icon: */
+        for (int j = 1; j < columnCount(); ++j)
+        {
+            QTableWidgetItem *pItem = item(i, j);
+            if (!pItem || pItem->text().isEmpty())
+                continue;
+            stringData << pItem->text();
+            if (j == 1)
+                stringData << ": ";
+        }
+        stringData << "\n";
+    }
+    return stringData.join(QString());
+}
+
+
 void UIRuntimeInfoWidget::updateInfoRow(InfoRow enmLine, const QString &strColumn0, const QString &strColumn1)
 {
@@ -464,4 +490,5 @@
     , m_pMainLayout(0)
     , m_pRuntimeInfoWidget(0)
+    , m_pCopyWholeTableAction(0)
 {
     if (!m_console.isNull())
@@ -479,4 +506,6 @@
 void UIInformationRuntime::retranslateUi()
 {
+    if (m_pCopyWholeTableAction)
+        m_pCopyWholeTableAction->setText(QApplication::translate("UIVMInformationDialog", "Copy All"));
 }
 
@@ -489,6 +518,12 @@
 
     m_pRuntimeInfoWidget = new UIRuntimeInfoWidget(0, m_machine, m_console);
+    AssertReturnVoid(m_pRuntimeInfoWidget);
+    connect(m_pRuntimeInfoWidget, &UIRuntimeInfoWidget::customContextMenuRequested,
+            this, &UIInformationRuntime::sltHandleTableContextMenuRequest);
     m_pMainLayout->addWidget(m_pRuntimeInfoWidget);
     m_pRuntimeInfoWidget->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Expanding);
+
+    m_pCopyWholeTableAction = new QAction(this);
+    connect(m_pCopyWholeTableAction, &QAction::triggered, this, &UIInformationRuntime::sltHandleCopyWholeTable);
 }
 
@@ -525,3 +560,24 @@
 }
 
+void UIInformationRuntime::sltHandleTableContextMenuRequest(const QPoint &position)
+{
+    if (!m_pCopyWholeTableAction)
+        return;
+
+    QMenu menu(this);
+    menu.addAction(m_pCopyWholeTableAction);
+    menu.exec(mapToGlobal(position));
+}
+
+void UIInformationRuntime::sltHandleCopyWholeTable()
+{
+    QClipboard *pClipboard = QApplication::clipboard();
+    if (!pClipboard)
+        return;
+    if (!m_pRuntimeInfoWidget)
+        return;
+
+    pClipboard->setText(m_pRuntimeInfoWidget->tableData(), QClipboard::Clipboard);
+}
+
 #include "UIInformationRuntime.moc"
Index: /trunk/src/VBox/Frontends/VirtualBox/src/runtime/information/UIInformationRuntime.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/runtime/information/UIInformationRuntime.h	(revision 85890)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/runtime/information/UIInformationRuntime.h	(revision 85891)
@@ -35,4 +35,5 @@
 
 /* Forward declarations: */
+class QAction;
 class QVBoxLayout;
 class UISession;
@@ -66,4 +67,6 @@
         void sltDnDModeChange(KDnDMode enmMode);
     /** @} */
+    void sltHandleTableContextMenuRequest(const QPoint &position);
+    void sltHandleCopyWholeTable();
 
 private:
@@ -78,4 +81,5 @@
     QVBoxLayout *m_pMainLayout;
     UIRuntimeInfoWidget *m_pRuntimeInfoWidget;
+    QAction *m_pCopyWholeTableAction;
 };
 
