From d8035bcaca4d8d72f7e6a66f375220b857275775 Mon Sep 17 00:00:00 2001
From: kh1 <qt-info@nokia.com>
Date: Tue, 11 Jan 2011 16:10:22 +0100
Subject: [PATCH] In case of network error print the error string.

Task-number: QTCREATORBUG-3378
---
 src/plugins/help/helpplugin.cpp     |  2 +-
 src/plugins/help/helpviewer.h       |  3 +++
 src/plugins/help/helpviewer_qwv.cpp | 14 +++++++++++++-
 3 files changed, 17 insertions(+), 2 deletions(-)

diff --git a/src/plugins/help/helpplugin.cpp b/src/plugins/help/helpplugin.cpp
index e77aba1690f..975358a3016 100644
--- a/src/plugins/help/helpplugin.cpp
+++ b/src/plugins/help/helpplugin.cpp
@@ -868,10 +868,10 @@ void HelpPlugin::activateContext()
     if (HelpViewer* viewer = viewerForContextMode()) {
         if (links.isEmpty()) {
             // No link found or no context object
+            viewer->setSource(QUrl(Help::Constants::AboutBlank));
             viewer->setHtml(tr("<html><head><title>No Documentation</title>"
                 "</head><body><br/><center><b>%1</b><br/>No documentation "
                 "available.</center></body></html>").arg(m_idFromContext));
-            viewer->setSource(QUrl());
         } else {
             int version = 0;
             const QRegExp exp("(\\d+)");
diff --git a/src/plugins/help/helpviewer.h b/src/plugins/help/helpviewer.h
index f4debacec95..5be60ae6a7d 100644
--- a/src/plugins/help/helpviewer.h
+++ b/src/plugins/help/helpviewer.h
@@ -129,6 +129,9 @@ private slots:
     void actionChanged();
     void slotLoadStarted();
     void slotLoadFinished(bool ok);
+#if !defined(QT_NO_WEBKIT)
+    void slotNetworkReplyFinished(QNetworkReply *reply);
+#endif
 
 private:
     bool eventFilter(QObject *obj, QEvent *event);
diff --git a/src/plugins/help/helpviewer_qwv.cpp b/src/plugins/help/helpviewer_qwv.cpp
index e8f5c91ae2e..da68a3c1ded 100644
--- a/src/plugins/help/helpviewer_qwv.cpp
+++ b/src/plugins/help/helpviewer_qwv.cpp
@@ -239,7 +239,10 @@ HelpViewer::HelpViewer(qreal zoom, QWidget *parent)
     settings()->setAttribute(QWebSettings::PluginsEnabled, false);
 
     setPage(new HelpPage(this));
-    page()->setNetworkAccessManager(new HelpNetworkAccessManager(this));
+    HelpNetworkAccessManager *manager = new HelpNetworkAccessManager(this);
+    page()->setNetworkAccessManager(manager);
+    connect(manager, SIGNAL(finished(QNetworkReply*)), this,
+        SLOT(slotNetworkReplyFinished(QNetworkReply*)));
 
     QAction* action = pageAction(QWebPage::OpenLinkInNewWindow);
     action->setText(tr("Open Link as New Page"));
@@ -433,6 +436,15 @@ void HelpViewer::actionChanged()
         emit forwardAvailable(a->isEnabled());
 }
 
+void HelpViewer::slotNetworkReplyFinished(QNetworkReply *reply)
+{
+    if (reply && reply->error() != QNetworkReply::NoError) {
+        setSource(QUrl(Help::Constants::AboutBlank));
+        setHtml(HelpViewer::PageNotFoundMessage.arg(reply->url().toString()
+            + QString::fromLatin1("<br><br>Error: %1").arg(reply->errorString())));
+    }
+}
+
 // -- private
 
 bool HelpViewer::eventFilter(QObject *obj, QEvent *event)
-- 
GitLab