Help: Provide native WebView backend on Mac

Run Qt Creator with environment variable QTC_HELPVIEWER_BACKEND to
* 'native' to get the WebView based one on Mac
* 'textbrowser' to get the QTextBrowser based one

Defaults to use QWebView if QtWebKit is available, or QTextBrowser if
not, like before.

Change-Id: If0660782b18ff3d89301fa7bcaf4e2e2fb69627d
Reviewed-by: Eike Ziller <eike.ziller@digia.com>
This commit is contained in:
Eike Ziller
2014-05-14 13:15:01 +02:00
parent 62a83b2b3f
commit c5be32fae7
15 changed files with 1032 additions and 49 deletions

View File

@@ -48,6 +48,10 @@
#include "searchtaskhandler.h"
#include "textbrowserhelpviewer.h"
#ifdef QTC_MAC_NATIVE_HELPVIEWER
#include "macwebkithelpviewer.h"
#endif
#include <bookmarkmanager.h>
#include <contentwindow.h>
#include <indexwindow.h>
@@ -638,14 +642,27 @@ void HelpPlugin::resetRightPaneScale()
HelpViewer *HelpPlugin::createHelpViewer(qreal zoom)
{
#ifndef QT_NO_WEBKIT
if (qgetenv("QTC_FORCE_TEXTBROWSER").isEmpty())
return new QtWebKitHelpViewer(zoom);
else
return new TextBrowserHelpViewer(zoom);
#else
return new TextBrowserHelpViewer(zoom);
HelpViewer *viewer = 0;
const QString backend = QLatin1String(qgetenv("QTC_HELPVIEWER_BACKEND"));
if (backend.compare(QLatin1String("native"), Qt::CaseInsensitive) == 0) {
#ifdef QTC_MAC_NATIVE_HELPVIEWER
viewer = new MacWebKitHelpViewer(zoom);
#endif
} else if (backend.compare(QLatin1String("textbrowser"), Qt::CaseInsensitive) == 0) {
viewer = new TextBrowserHelpViewer(zoom);
} else {
#ifndef QT_NO_WEBKIT
viewer = new QtWebKitHelpViewer(zoom);
#else
viewer = new TextBrowserHelpViewer(zoom);
#endif
}
// initialize font
QVariant fontSetting = LocalHelpManager::engineFontSettings();
if (fontSetting.isValid())
viewer->setViewerFont(fontSetting.value<QFont>());
return viewer;
}
void HelpPlugin::activateHelpMode()
@@ -729,11 +746,11 @@ void HelpPlugin::fontChanged()
if (!m_helpViewerForSideBar)
createRightPaneContextViewer();
const QHelpEngine &engine = LocalHelpManager::helpEngine();
QFont font = qvariant_cast<QFont>(engine.customValue(QLatin1String("font"),
m_helpViewerForSideBar->viewerFont()));
QVariant fontSetting = LocalHelpManager::engineFontSettings();
QFont font = fontSetting.isValid() ? fontSetting.value<QFont>()
: m_helpViewerForSideBar->viewerFont();
m_helpViewerForSideBar->setFont(font);
m_helpViewerForSideBar->setViewerFont(font);
const int count = OpenPagesManager::instance().pageCount();
for (int i = 0; i < count; ++i) {
if (HelpViewer *viewer = CentralWidget::instance()->viewerAt(i))