Index: /trunk/src/VBox/Frontends/VirtualBox/src/helpbrowser/UIHelpBrowserWidget.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/helpbrowser/UIHelpBrowserWidget.cpp	(revision 86722)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/helpbrowser/UIHelpBrowserWidget.cpp	(revision 86723)
@@ -118,6 +118,8 @@
     , m_pContentWidget(0)
     , m_pIndexWidget(0)
+    , m_pContentModel(0)
     , m_pBookmarksWidget(0)
     , m_pShowHideTabWidgetAction(0)
+    , m_fModelContentCreated(false)
 {
     qRegisterMetaType<HelpBrowserTabs>("HelpBrowserTabs");
@@ -177,6 +179,7 @@
     m_pContentWidget = m_pHelpEngine->contentWidget();
     m_pIndexWidget = m_pHelpEngine->indexWidget();
-
-    AssertReturnVoid(m_pContentWidget && m_pIndexWidget);
+    m_pContentModel = m_pHelpEngine->contentModel();
+
+    AssertReturnVoid(m_pContentWidget && m_pIndexWidget && m_pContentModel);
     m_pSplitter->addWidget(m_pTabWidget);
 
@@ -184,8 +187,4 @@
     m_pTabWidget->insertTab(HelpBrowserTabs_Index, m_pIndexWidget, QString());
     m_pTabWidget->insertTab(HelpBrowserTabs_Bookmarks, m_pBookmarksWidget, QString());
-
-    // insertTabWidgets(HelpBrowserTabs_TOC);
-    // insertTabWidgets(HelpBrowserTabs_Index);
-    // insertTabWidgets(HelpBrowserTabs_Bookmarks);
 
     m_pContentViewer = new UIHelpBrowserViewer(m_pHelpEngine);
@@ -209,4 +208,6 @@
     connect(m_pIndexWidget, &QHelpIndexWidget::linkActivated,
             m_pContentViewer, &UIHelpBrowserViewer::setSource);
+    connect(m_pContentModel, &QHelpContentModel::contentsCreated,
+            this, &UIHelpBrowserWidget::sltHandleContentsCreated);
 
     if (QFile(m_strHelpFilePath).exists() && m_pHelpEngine)
@@ -399,5 +400,7 @@
         return;
     const QUrl &url = pItem->url();
+    m_pContentViewer->blockSignals(true);
     m_pContentViewer->setSource(url);
+    m_pContentViewer->blockSignals(false);
 #else
     Q_UNUSED(index);
@@ -407,7 +410,28 @@
 void UIHelpBrowserWidget::sltHandleHelpBrowserViewerSourceChange(const QUrl &source)
 {
+#if defined(RT_OS_LINUX) && defined(VBOX_WITH_DOCS_QHELP)
+    if (m_fModelContentCreated && m_pContentWidget && source.isValid() && m_pContentModel)
+    {
+        QModelIndex index = m_pContentWidget->indexOf(source);
+        QItemSelectionModel *pSelectionModel = m_pContentWidget->selectionModel();
+        if (pSelectionModel && index.isValid())
+        {
+            m_pContentWidget->blockSignals(true);
+            pSelectionModel->select(index, QItemSelectionModel::ClearAndSelect | QItemSelectionModel::Rows);
+            m_pContentWidget->scrollTo(index, QAbstractItemView::EnsureVisible);
+            m_pContentWidget->expand(index);
+            m_pContentWidget->blockSignals(false);
+        }
+    }
+#else
     Q_UNUSED(source);
-}
-
-
+#endif
+}
+
+void UIHelpBrowserWidget::sltHandleContentsCreated()
+{
+    m_fModelContentCreated = true;
+    if (m_pContentViewer)
+        sltHandleHelpBrowserViewerSourceChange(m_pContentViewer->source());
+}
 #include "UIHelpBrowserWidget.moc"
Index: /trunk/src/VBox/Frontends/VirtualBox/src/helpbrowser/UIHelpBrowserWidget.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/helpbrowser/UIHelpBrowserWidget.h	(revision 86722)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/helpbrowser/UIHelpBrowserWidget.h	(revision 86723)
@@ -39,4 +39,5 @@
 class QHBoxLayout;
 class QHelpEngine;
+class QHelpContentModel;
 class QHelpContentWidget;
 class QHelpIndexWidget;
@@ -81,4 +82,5 @@
     void sltHandleTabVisibility(bool togggled);
     void sltHandleHelpBrowserViewerSourceChange(const QUrl &source);
+    void sltHandleContentsCreated();
 
 private:
@@ -133,7 +135,10 @@
     QHelpContentWidget  *m_pContentWidget;
     QHelpIndexWidget    *m_pIndexWidget;
+    QHelpContentModel   *m_pContentModel;
     QWidget             *m_pBookmarksWidget;
     QAction             *m_pShowHideTabWidgetAction;
     QString              m_strPageNotFoundText;
+    /* This is set t true when handling QHelpContentModel::contentsCreated signal. */
+    bool                 m_fModelContentCreated;
 };
 
