diff --git a/src/plugins/help/CMakeLists.txt b/src/plugins/help/CMakeLists.txt index 6ed078497b3..2063293dca7 100644 --- a/src/plugins/help/CMakeLists.txt +++ b/src/plugins/help/CMakeLists.txt @@ -31,6 +31,14 @@ extend_qtc_plugin(Help DEFINES HELP_NEW_FILTER_ENGINE ) +set(HELPVIEWER_DEFAULT_BACKEND "litehtml" CACHE STRING "Sets default help viewer backend") +set_property(CACHE HELPVIEWER_DEFAULT_BACKEND PROPERTY STRINGS "litehtml;qtwebengine;textbrowser") + +extend_qtc_plugin(Help + CONDITION HELPVIEWER_DEFAULT_BACKEND + DEFINES QTC_DEFAULT_HELPVIEWER_BACKEND="${HELPVIEWER_DEFAULT_BACKEND}" +) + extend_qtc_plugin(Help CONDITION FWWebKit AND FWAppKit AND Qt5_VERSION VERSION_LESS 6.0.0 FEATURE_INFO "Native WebKit help viewer" diff --git a/src/plugins/help/localhelpmanager.cpp b/src/plugins/help/localhelpmanager.cpp index ee6220c280e..3368ec82b80 100644 --- a/src/plugins/help/localhelpmanager.cpp +++ b/src/plugins/help/localhelpmanager.cpp @@ -92,10 +92,6 @@ static const char kLastShownPagesZoomKey[] = "Help/LastShownPagesZoom"; static const char kLastSelectedTabKey[] = "Help/LastSelectedTab"; static const char kViewerBackend[] = "Help/ViewerBackend"; -static const char kQtWebEngineBackend[] = "qtwebengine"; -static const char kLitehtmlBackend[] = "litehtml"; -static const char kTextBrowserBackend[] = "textbrowser"; - static const int kDefaultFallbackFontSize = 14; static QString defaultFallbackFontFamily() @@ -327,20 +323,16 @@ HelpViewerFactory LocalHelpManager::defaultViewerBackend() } if (!backend.isEmpty()) qWarning("Help viewer backend \"%s\" not found, using default.", backend.constData()); - const Utils::optional webengineFactory = backendForId(kQtWebEngineBackend); - if (webengineFactory) - return *webengineFactory; - - const Utils::optional litehtmlFactory = backendForId(kLitehtmlBackend); - if (litehtmlFactory) - return *litehtmlFactory; - - return backendForId(kTextBrowserBackend).value_or(HelpViewerFactory()); + const QVector backends = viewerBackends(); + return backends.isEmpty() ? HelpViewerFactory() : backends.first(); } QVector LocalHelpManager::viewerBackends() { QVector result; +#ifdef QTC_LITEHTML_HELPVIEWER + result.append({"litehtml", tr("litehtml"), []() { return new LiteHtmlHelpViewer; }}); +#endif #ifdef QTC_WEBENGINE_HELPVIEWER static bool schemeRegistered = false; if (!schemeRegistered) { @@ -349,17 +341,21 @@ QVector LocalHelpManager::viewerBackends() scheme.setFlags(QWebEngineUrlScheme::LocalScheme | QWebEngineUrlScheme::LocalAccessAllowed); QWebEngineUrlScheme::registerScheme(scheme); } - result.append( - {kQtWebEngineBackend, tr("QtWebEngine"), []() { return new WebEngineHelpViewer; }}); -#endif -#ifdef QTC_LITEHTML_HELPVIEWER - result.append({kLitehtmlBackend, tr("litehtml"), []() { return new LiteHtmlHelpViewer; }}); + result.append({"qtwebengine", tr("QtWebEngine"), []() { return new WebEngineHelpViewer; }}); #endif + result.append({"textbrowser", tr("QTextBrowser"), []() { return new TextBrowserHelpViewer; }}); #ifdef QTC_MAC_NATIVE_HELPVIEWER result.append({"native", tr("WebKit"), []() { return new MacWebKitHelpViewer; }}); #endif - result.append( - {kTextBrowserBackend, tr("QTextBrowser"), []() { return new TextBrowserHelpViewer; }}); +#ifdef QTC_DEFAULT_HELPVIEWER_BACKEND + const int index = Utils::indexOf(result, [](const HelpViewerFactory &f) { + return f.id == QByteArray(QTC_DEFAULT_HELPVIEWER_BACKEND); + }); + if (QTC_GUARD(index >= 0)) { + const HelpViewerFactory defaultBackend = result.takeAt(index); + result.prepend(defaultBackend); + } +#endif return result; }