Index: trunk/src/VBox/Frontends/VirtualBox/src/helpbrowser/UIHelpBrowserWidget.cpp
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/helpbrowser/UIHelpBrowserWidget.cpp	(revision 86631)
+++ trunk/src/VBox/Frontends/VirtualBox/src/helpbrowser/UIHelpBrowserWidget.cpp	(revision 86634)
@@ -54,4 +54,12 @@
 #include "CSystemProperties.h"
 
+enum HelpBrowserTabs
+{
+    HelpBrowserTabs_TOC = 0,
+    HelpBrowserTabs_Index,
+    HelpBrowserTabs_Bookmarks,
+    HelpBrowserTabs_Max
+};
+
 class UIHelpBrowserViewer : public QTextBrowser
 {
@@ -112,4 +120,8 @@
     , m_pSplitter(0)
     , m_pMenu(0)
+    , m_pContentWidget(0)
+    , m_pIndexWidget(0)
+    , m_pBookmarksWidget(0)
+    , m_pShowHideContentsWidgetAction(0)
 {
     prepare();
@@ -139,5 +151,5 @@
     prepareActions();
     prepareWidgets();
-    prepareMenuAndMenuActions();
+    prepareMenu();
     retranslateUi();
 }
@@ -145,5 +157,6 @@
 void UIHelpBrowserWidget::prepareActions()
 {
-
+    m_pShowHideContentsWidgetAction = new QAction(this);
+    m_pShowHideContentsWidgetAction->setData(HelpBrowserTabs_TOC);
 }
 
@@ -159,11 +172,16 @@
 #ifdef RT_OS_LINUX
     m_pHelpEngine = new QHelpEngine(m_strHelpFilePath, this);
-
+    m_pBookmarksWidget = new QWidget(this);
     m_pTabWidget = new QITabWidget;
-    AssertReturnVoid(m_pTabWidget);
-    AssertReturnVoid(m_pHelpEngine->contentWidget() && m_pHelpEngine->indexWidget());
+    AssertReturnVoid(m_pTabWidget && m_pHelpEngine && m_pBookmarksWidget);
+
+    m_pContentWidget = m_pHelpEngine->contentWidget();
+    m_pIndexWidget = m_pHelpEngine->indexWidget();
+
+    AssertReturnVoid(m_pContentWidget && m_pIndexWidget);
     m_pSplitter->addWidget(m_pTabWidget);
-    m_pTabWidget->addTab(m_pHelpEngine->contentWidget(), tr("Contents"));
-    m_pTabWidget->addTab(m_pHelpEngine->indexWidget(), tr("Index"));
+    m_pTabWidget->insertTab(HelpBrowserTabs_TOC, m_pContentWidget, QString());
+    m_pTabWidget->insertTab(HelpBrowserTabs_Index, m_pIndexWidget, QString());
+    m_pTabWidget->insertTab(HelpBrowserTabs_Bookmarks, m_pBookmarksWidget, QString());
 
     m_pContentViewer = new UIHelpBrowserViewer(m_pHelpEngine);
@@ -178,11 +196,11 @@
             this, &UIHelpBrowserWidget::sltHandleHelpEngineSetupFinished);
 
-    connect(m_pHelpEngine->contentWidget(), &QHelpContentWidget::linkActivated,
+    connect(m_pContentWidget, &QHelpContentWidget::linkActivated,
             m_pContentViewer, &UIHelpBrowserViewer::setSource);
-    connect(m_pHelpEngine->contentWidget(), &QHelpContentWidget::clicked,
+    connect(m_pContentWidget, &QHelpContentWidget::clicked,
             this, &UIHelpBrowserWidget::sltHandleContentWidgetItemClicked);
 
 
-    connect(m_pHelpEngine->indexWidget(), &QHelpIndexWidget::linkActivated,
+    connect(m_pIndexWidget, &QHelpIndexWidget::linkActivated,
             m_pContentViewer, &UIHelpBrowserViewer::setSource);
 
@@ -218,5 +236,5 @@
 }
 
-void UIHelpBrowserWidget::prepareMenuAndMenuActions()
+void UIHelpBrowserWidget::prepareMenu()
 {
     m_pMenu = new QMenu(tr("View"), this);
@@ -251,4 +269,12 @@
         m_pToolBar->updateLayout();
 #endif
+    if (m_pTabWidget)
+    {
+        m_pTabWidget->setTabText(HelpBrowserTabs_TOC, tr("Contents"));
+        m_pTabWidget->setTabText(HelpBrowserTabs_Index, tr("Index"));
+        m_pTabWidget->setTabText(HelpBrowserTabs_Bookmarks, tr("Bookmarks"));
+    }
+    if (m_pShowHideContentsWidgetAction)
+        m_pShowHideContentsWidgetAction->setText("Show/Hide Contents");
 }
 
@@ -289,7 +315,7 @@
 {
 #ifdef RT_OS_LINUX
-    AssertReturnVoid(m_pContentViewer && m_pHelpEngine && m_pHelpEngine->contentWidget());
+    AssertReturnVoid(m_pContentViewer && m_pHelpEngine && m_pContentWidget);
     QHelpContentModel *pContentModel =
-        qobject_cast<QHelpContentModel*>(m_pHelpEngine->contentWidget()->model());
+        qobject_cast<QHelpContentModel*>(m_pContentWidget->model());
     if (!pContentModel)
         return;
Index: trunk/src/VBox/Frontends/VirtualBox/src/helpbrowser/UIHelpBrowserWidget.h
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/helpbrowser/UIHelpBrowserWidget.h	(revision 86631)
+++ trunk/src/VBox/Frontends/VirtualBox/src/helpbrowser/UIHelpBrowserWidget.h	(revision 86634)
@@ -37,17 +37,16 @@
 
 /* Forward declarations: */
+class QHBoxLayout;
 class QHelpEngine;
+class QHelpContentWidget;
+class QHelpIndexWidget;
 class QPlainTextEdit;
-class UIHelpBrowserViewer;
-class QHBoxLayout;
+class QSplitter;
 class QITabWidget;
 class QIToolBar;
 class UIActionPool;
 class UIDialogPanel;
-class QSplitter;
+class UIHelpBrowserViewer;
 
-/** QWidget extension providing GUI for VirtualBox LogViewer. It
- *  encapsulates log pages, toolbar, a tab widget and manages
- *  interaction between these classes. */
 class SHARED_LIBRARY_STUFF UIHelpBrowserWidget  : public QIWithRetranslateUI<QWidget>
 {
@@ -60,17 +59,11 @@
 public:
 
-    /** Constructs the VM Log-Viewer by passing @a pParent to QWidget base-class constructor.
-      * @param  enmEmbedding  Brings the type of widget embedding.
-      * @param  fShowToolbar  Brings whether we should create/show toolbar.*/
     UIHelpBrowserWidget(EmbedTo enmEmbedding, const QString &strHelpFilePath,
                         bool fShowToolbar = true, QWidget *pParent = 0);
-    /** Destructs the VM Log-Viewer. */
     ~UIHelpBrowserWidget();
 
-    /** Returns the menu. */
     QMenu *menu() const;
 
 #ifdef VBOX_WS_MAC
-    /** Returns the toolbar. */
     QIToolBar *toolbar() const { return m_pToolBar; }
 #endif
@@ -93,5 +86,5 @@
     void prepareWidgets();
     void prepareToolBar();
-    void prepareMenuAndMenuActions();
+    void prepareMenu();
     void loadOptions();
 
@@ -135,4 +128,8 @@
     QSplitter           *m_pSplitter;
     QMenu               *m_pMenu;
+    QHelpContentWidget  *m_pContentWidget;
+    QHelpIndexWidget    *m_pIndexWidget;
+    QWidget             *m_pBookmarksWidget;
+    QAction             *m_pShowHideContentsWidgetAction;
 };
 
