diff --git a/src/libs/registry/docset.cpp b/src/libs/registry/docset.cpp index b3086dd10..c48221a7c 100644 --- a/src/libs/registry/docset.cpp +++ b/src/libs/registry/docset.cpp @@ -57,7 +57,7 @@ const char DashDocSetPluginKeyword[] = "DashDocSetPluginKeyword"; const char DashIndexFilePath[] = "dashIndexFilePath"; const char DocSetPlatformFamily[] = "DocSetPlatformFamily"; //const char IsDashDocset[] = "isDashDocset"; -//const char IsJavaScriptEnabled[] = "isJavaScriptEnabled"; +const char IsJavaScriptEnabled[] = "isJavaScriptEnabled"; } } @@ -163,6 +163,10 @@ Docset::Docset(const QString &path) : } } + if (plist.contains(InfoPlist::IsJavaScriptEnabled)) { + m_javaScriptEnabled = plist[InfoPlist::IsJavaScriptEnabled].toBool(); + } + m_keywords.removeDuplicates(); // Prefer index path provided by the docset over metadata. @@ -682,6 +686,11 @@ void Docset::setFuzzySearchEnabled(bool enabled) m_fuzzySearchEnabled = enabled; } +bool Docset::isJavaScriptEnabled() const +{ + return m_javaScriptEnabled; +} + /** * \brief Returns score based on a substring position in a string. * \param str Original string. diff --git a/src/libs/registry/docset.h b/src/libs/registry/docset.h index 1e25d88cb..d145fc808 100644 --- a/src/libs/registry/docset.h +++ b/src/libs/registry/docset.h @@ -79,6 +79,8 @@ class Docset bool isFuzzySearchEnabled() const; void setFuzzySearchEnabled(bool enabled); + bool isJavaScriptEnabled() const; + private: enum class Type { Invalid, @@ -113,6 +115,7 @@ class Docset mutable QMap> m_symbols; Util::SQLiteDatabase *m_db = nullptr; bool m_fuzzySearchEnabled = false; + bool m_javaScriptEnabled = false; }; } // namespace Registry diff --git a/src/libs/ui/mainwindow.cpp b/src/libs/ui/mainwindow.cpp index 14aa20313..3e5450703 100644 --- a/src/libs/ui/mainwindow.cpp +++ b/src/libs/ui/mainwindow.cpp @@ -624,9 +624,10 @@ void MainWindow::attachTab(TabState *tabState) m_tabBar->setTabIcon(m_tabBar->currentIndex(), docsetIcon(name)); Registry::Docset *docset = m_application->docsetRegistry()->docset(name); - if (docset) + if (docset) { tabState->tocModel->setResults(docset->relatedLinks(url)); - + tabState->widget->setJavaScriptEnabled(docset->isJavaScriptEnabled()); + } ui->actionBack->setEnabled(tabState->widget->canGoBack()); ui->actionForward->setEnabled(tabState->widget->canGoForward()); }); diff --git a/src/libs/ui/widgets/webviewtab.cpp b/src/libs/ui/widgets/webviewtab.cpp index 921760d5f..c03b17155 100644 --- a/src/libs/ui/widgets/webviewtab.cpp +++ b/src/libs/ui/widgets/webviewtab.cpp @@ -70,6 +70,11 @@ void WebViewTab::setZoomLevel(int level) m_webView->setZoomLevel(level); } +void WebViewTab::setJavaScriptEnabled(bool enabled) +{ + m_webView->page()->settings()->setAttribute(QWebSettings::JavascriptEnabled, enabled); +} + void WebViewTab::setWebBridgeObject(const QString &name, QObject *object) { connect(m_webView->page()->mainFrame(), &QWebFrame::javaScriptWindowObjectCleared, diff --git a/src/libs/ui/widgets/webviewtab.h b/src/libs/ui/widgets/webviewtab.h index 63d9dddf5..6e4c64c12 100644 --- a/src/libs/ui/widgets/webviewtab.h +++ b/src/libs/ui/widgets/webviewtab.h @@ -52,6 +52,7 @@ class WebViewTab : public QWidget int zoomLevel() const; void setZoomLevel(int level); + void setJavaScriptEnabled(bool enabled); void setWebBridgeObject(const QString &name, QObject *object);