Index: /trunk/src/VBox/Frontends/VirtualBox/src/runtime/information/UIInformation.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/runtime/information/UIInformation.cpp	(revision 59919)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/runtime/information/UIInformation.cpp	(revision 59920)
@@ -54,8 +54,8 @@
 {
     /* Create main-layout: */
-    m_pMainLayout = new QVBoxLayout(this);
+    m_pMainLayout = new QVBoxLayout;
     AssertPtrReturnVoid(m_pMainLayout);
     {
-        /* Prepare main-layout: */
+        /* Configure main-layout: */
         m_pMainLayout->setContentsMargins(2, 0, 0, 0);
         m_pMainLayout->setSpacing(0);
@@ -66,10 +66,10 @@
 void UIInformation::prepareModel()
 {
-    /* Create model: */
+    /* Create information-model: */
     m_pModel = new UIInformationModel(this, m_machine, m_console);
     AssertPtrReturnVoid(m_pModel);
     {
-        /* Prepare data for information-model: */
-        /* General data-item: */
+        /* Add data to information-model: */
+        /* Create General data-item: */
         UIInformationDataItem *pGeneral = new UIInformationDataGeneral(m_machine, m_console, m_pModel);
         AssertPtrReturnVoid(pGeneral);
@@ -78,5 +78,5 @@
         }
 
-        /* System data-item: */
+        /* Create System data-item: */
         UIInformationDataItem *pSystem = new UIInformationDataSystem(m_machine, m_console, m_pModel);
         AssertPtrReturnVoid(pSystem);
@@ -85,5 +85,5 @@
         }
 
-        /* Display data-item: */
+        /* Create Display data-item: */
         UIInformationDataItem *pDisplay = new UIInformationDataDisplay(m_machine, m_console, m_pModel);
         AssertPtrReturnVoid(pDisplay);
@@ -92,5 +92,5 @@
         }
 
-        /* Storage data-item: */
+        /* Create Storage data-item: */
         UIInformationDataItem *pStorage = new UIInformationDataStorage(m_machine, m_console, m_pModel);
         AssertPtrReturnVoid(pStorage);
@@ -99,5 +99,5 @@
         }
 
-        /* Audio data-item: */
+        /* Create Audio data-item: */
         UIInformationDataItem *pAudio = new UIInformationDataAudio(m_machine, m_console, m_pModel);
         AssertPtrReturnVoid(pAudio);
@@ -106,5 +106,5 @@
         }
 
-        /* Network data-item: */
+        /* Create Network data-item: */
         UIInformationDataItem *pNetwork = new UIInformationDataNetwork(m_machine, m_console, m_pModel);
         AssertPtrReturnVoid(pNetwork);
@@ -113,5 +113,5 @@
         }
 
-        /* Serial ports data-item: */
+        /* Create Serial-ports data-item: */
         UIInformationDataItem *pSerialPorts = new UIInformationDataSerialPorts(m_machine, m_console, m_pModel);
         AssertPtrReturnVoid(pSerialPorts);
@@ -121,5 +121,5 @@
 
 #ifdef VBOX_WITH_PARALLEL_PORTS
-        /* Parallel ports data-item: */
+        /* Create Parallel-ports data-item: */
         UIInformationDataItem *pParallelPorts = new UIInformationDataParallelPorts(m_machine, m_console, m_pModel);
         AssertPtrReturnVoid(pParallelPorts);
@@ -129,5 +129,5 @@
 #endif /* VBOX_WITH_PARALLEL_PORTS */
 
-        /* USB data-item: */
+        /* Create USB data-item: */
         UIInformationDataItem *pUSB = new UIInformationDataUSB(m_machine, m_console, m_pModel);
         AssertPtrReturnVoid(pUSB);
@@ -136,5 +136,5 @@
         }
 
-        /* Shared folders data-item: */
+        /* Create Shared-folders data-item: */
         UIInformationDataItem *pSharedFolders = new UIInformationDataSharedFolders(m_machine, m_console, m_pModel);
         AssertPtrReturnVoid(pSharedFolders);
@@ -147,9 +147,9 @@
 void UIInformation::prepareView()
 {
-    /* Create view: */
+    /* Create information-view: */
     m_pView = new UIInformationView;
     AssertPtrReturnVoid(m_pView);
     {
-        /* Prepare view: */
+        /* Configure information-view: */
         m_pView->setResizeMode(QListView::Adjust);
         /* Create information-delegate item: */
@@ -163,7 +163,7 @@
                 m_pView, SLOT(updateData(const QModelIndex&, const QModelIndex&)));
 
-        /* Set model: */
+        /* Set model for view: */
         m_pView->setModel(m_pModel);
-        /* Layout view: */
+        /* Add information-view to the main-layout: */
         m_pMainLayout->addWidget(m_pView);
     }
Index: /trunk/src/VBox/Frontends/VirtualBox/src/runtime/information/UIInformationItem.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/runtime/information/UIInformationItem.cpp	(revision 59919)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/runtime/information/UIInformationItem.cpp	(revision 59920)
@@ -28,4 +28,5 @@
 /* GUI includes: */
 # include "UIInformationItem.h"
+# include "VBoxGlobal.h"
 
 #endif /* !VBOX_WITH_PRECOMPILED_HEADERS */
@@ -34,10 +35,14 @@
     : QStyledItemDelegate(pParent)
 {
+    /* Create text-document: */
     m_pTextDocument = new QTextDocument(this);
+    AssertPtrReturnVoid(m_pTextDocument);
 }
 
 void UIInformationItem::setIcon(const QString &strIcon) const
 {
+    /* Cache icon: */
     m_strIcon = strIcon;
+    /* Update text-layout: */
     updateTextLayout();
 }
@@ -47,4 +52,5 @@
     /* Cache name: */
     m_strName = strName;
+    /* Update text-layout: */
     updateTextLayout();
 }
@@ -52,4 +58,5 @@
 const UITextTable& UIInformationItem::text() const
 {
+    /* Return text: */
     return m_text;
 }
@@ -60,5 +67,5 @@
     m_text.clear();
 
-    /* For each the line of the passed table: */
+    /* For each line of the passed table: */
     foreach (const UITextTableLine &line, text)
     {
@@ -78,4 +85,5 @@
             /* Parse the 1st one to sub-lines: */
             QStringList subLines = strLeftLine.split(QRegExp("\\n"));
+            /* Parse sub-lines: */
             foreach (const QString &strSubLine, subLines)
                 m_text << UITextTableLine(strSubLine, QString());
@@ -89,12 +97,17 @@
 void UIInformationItem::paint(QPainter *pPainter, const QStyleOptionViewItem &option, const QModelIndex &index) const
 {
+    /* Save the painter: */
     pPainter->save();
+    /* Update data: */
     updateData(index);
 
+    /* Draw item as per application style: */
     QApplication::style()->drawControl(QStyle::CE_ItemViewItem, &option, pPainter);
     pPainter->resetTransform();
     pPainter->translate(option.rect.topLeft());
 
+    /* Draw the content of text-document: */
     m_pTextDocument->drawContents(pPainter);
+    /* Restore the painter: */
     pPainter->restore();
 }
@@ -102,5 +115,7 @@
 QSize UIInformationItem::sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const
 {
+    /* Update data: */
     updateData(index);
+    /* Return size: */
     return m_pTextDocument->size().toSize();
 }
@@ -108,7 +123,11 @@
 void UIInformationItem::updateData(const QModelIndex &index) const
 {
+    /* Set name: */
     setName(index.data().toString());
+    /* Set icon: */
     setIcon(index.data(Qt::DecorationRole).toString());
+    /* Set text: */
     setText(index.data(Qt::UserRole + 1).value<UITextTable>());
+    /* Get type of the item: */
     m_type = index.data(Qt::UserRole + 2).value<InformationElementType>();
 }
@@ -116,4 +135,5 @@
 QString UIInformationItem::htmlData()
 {
+    /* Return html-data: */
     return m_pTextDocument->toHtml();
 }
@@ -121,5 +141,5 @@
 void UIInformationItem::updateTextLayout() const
 {
-    /* Details templates */
+    /* Details templates: */
     static const char *sSectionBoldTpl =
         "<tr><td width=22 rowspan=%1 align=left><img width=16 height=16 src='%2'></td>"
@@ -127,5 +147,5 @@
             "%4";
     static const char *sSectionItemTpl2 =
-        "<tr><td width=300><nobr>%1</nobr></td><td/><td>%2</td></tr>";
+        "<tr><td width=200><nobr>%1</nobr></td><td/><td>%2</td></tr>";
 
     const QString &sectionTpl = sSectionBoldTpl;
@@ -135,12 +155,13 @@
     {
         QString item;
+        /* Parse lines from text and add it to text: */
         foreach (const UITextTableLine &line, m_text)
             item = item + QString(sSectionItemTpl2).arg(line.first, line.second);
 
-        report = sectionTpl
-                  .arg(m_text.count() + 1) /* rows */
-                  .arg(m_strIcon, /* icon */
-                       m_strName, /* title */
-                       item); /* items */
+        /* Format the entire item: */
+        report = sectionTpl.arg(m_text.count() + 1) /* rows */
+                           .arg(m_strIcon, /* icon */
+                                m_strName, /* title */
+                                item); /* items */
     }
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/runtime/information/UIInformationModel.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/runtime/information/UIInformationModel.cpp	(revision 59919)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/runtime/information/UIInformationModel.cpp	(revision 59920)
@@ -50,6 +50,7 @@
 }
 
-int UIInformationModel::rowCount(const QModelIndex & /*parent */) const
+int UIInformationModel::rowCount(const QModelIndex& /*parent */) const
 {
+    /* Return row-count: */
     return m_list.count();
 }
@@ -57,7 +58,9 @@
 QVariant UIInformationModel::data(const QModelIndex &index, int role) const
 {
+    /* Get row: */
     int row = index.row();
-    int col = index.column();
+    /* Get item at the row: */
     UIInformationDataItem *pItem = m_list.at(row);
+    /* Return the data for the corresponding role: */
     return pItem->data(index, role);
 }
@@ -81,4 +84,5 @@
 QHash<int, QByteArray> UIInformationModel::roleNames() const
 {
+    /* Add supported roles and return: */
     QHash<int, QByteArray> roleNames;
     roleNames[Qt::DisplayRole] = "";
@@ -91,5 +95,7 @@
 void UIInformationModel::addItem(UIInformationDataItem *pItem)
 {
+    /* Make sure item is valid: */
     AssertPtrReturnVoid(pItem);
+    /* Add item: */
     m_list.append(pItem);
 }
@@ -97,4 +103,5 @@
 void UIInformationModel::updateData(const QModelIndex &idx)
 {
+    /* Emit data-changed signal: */
     emit dataChanged(idx, idx);
 }
Index: /trunk/src/VBox/Frontends/VirtualBox/src/runtime/information/UIInformationRuntime.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/runtime/information/UIInformationRuntime.cpp	(revision 59919)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/runtime/information/UIInformationRuntime.cpp	(revision 59920)
@@ -57,5 +57,5 @@
     AssertPtrReturnVoid(m_pMainLayout);
     {
-        /* Prepare main-layout: */
+        /* Configure main-layout: */
         m_pMainLayout->setContentsMargins(2, 0, 0, 0);
         m_pMainLayout->setSpacing(0);
@@ -70,5 +70,5 @@
     AssertPtrReturnVoid(m_pModel);
 
-    /* Prepare data for information-model: */
+    /* Add data to information-model: */
     UIInformationDataRuntimeAttributes *pGeneral = new UIInformationDataRuntimeAttributes(m_machine, m_console, m_pModel);
     AssertPtrReturnVoid(pGeneral);
@@ -77,5 +77,5 @@
     }
 
-    /* Prepare data for information-model: */
+    /* Create data for information-model: */
     UIInformationDataNetworkStatistics *pNetwork = new UIInformationDataNetworkStatistics(m_machine, m_console, m_pModel);
     AssertPtrReturnVoid(pNetwork);
@@ -84,5 +84,5 @@
     }
 
-    /* Prepare data for information-model: */
+    /* Create data for information-model: */
     UIInformationDataStorageStatistics *pStorage = new UIInformationDataStorageStatistics(m_machine, m_console, m_pModel);
     AssertPtrReturnVoid(pStorage);
Index: /trunk/src/VBox/Frontends/VirtualBox/src/runtime/information/UIInformationView.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/runtime/information/UIInformationView.cpp	(revision 59919)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/runtime/information/UIInformationView.cpp	(revision 59920)
@@ -20,5 +20,7 @@
 #else  /* !VBOX_WITH_PRECOMPILED_HEADERS */
 
+# include <QTextEdit>
 # include <QClipboard>
+# include <QDebug>
 
 /* GUI includes: */
@@ -31,8 +33,16 @@
     : QListView(pParent)
 {
+    /* Create a dummy textEdit for copying rich-text as,
+     * manual copying to clipboard is not working: */
+    m_pTextEdit = new QTextEdit(this);
+    /* Hide textedit: */
+    m_pTextEdit->setVisible(false);
+    /* Set selection mode: */
+    setSelectionMode(QAbstractItemView::ExtendedSelection);
 }
 
 void UIInformationView::updateData(const QModelIndex &topLeft, const QModelIndex &bottomRight)
 {
+    /* Update: */
     update(topLeft);
 }
@@ -40,21 +50,35 @@
 void UIInformationView::keyPressEvent(QKeyEvent *pEvent)
 {
+    /* Copy the text: */
     if (pEvent == QKeySequence::Copy)
     {
-        if (selectionModel())
+        QString strText;
+        /* Get Selection model: */
+        QItemSelectionModel *pSelectionModel = selectionModel();
+        if (pSelectionModel)
         {
-            QString strText;
-            foreach (const QModelIndex &index, selectionModel()->selectedIndexes())
+            /* Check all the selected-indexes and copy the text: */
+            foreach (const QModelIndex &index, pSelectionModel->selectedIndexes())
             {
                 UIInformationItem *pItem = dynamic_cast<UIInformationItem*>(itemDelegate(index));
                 if (pItem)
                 {
+                    /* Update the data corresponding data: */
+                    pItem->updateData(index);
+                    /* Get and add the html-data of item: */
                     strText.append(pItem->htmlData());
                 }
             }
-            QApplication::clipboard()->setText(strText);
-            pEvent->accept();
         }
+        /* Set the text to text-edit and copy from it: */
+        m_pTextEdit->setText(strText);
+        m_pTextEdit->selectAll();
+        m_pTextEdit->copy();
+        /* Accept/acknowledge event: */
+        pEvent->accept();
     }
+    /* Call to base-class: */
+    else
+        QListView::keyPressEvent(pEvent);
 }
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/runtime/information/UIInformationView.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/runtime/information/UIInformationView.h	(revision 59919)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/runtime/information/UIInformationView.h	(revision 59920)
@@ -23,4 +23,8 @@
 #include <QModelIndex>
 
+/* Forward declarations: */
+class QTextEdit;
+class UIInformationItem;
+
 /** QListView extension
   * providing GUI with information-view in session-information window. */
@@ -40,4 +44,8 @@
     /** Handles Qt key-press @a pEvent. */
     void keyPressEvent(QKeyEvent *pEvent);
+
+private:
+    /** Holds the instance of textedit we create: */
+    QTextEdit *m_pTextEdit;
 };
 
