From d5ea5342cf41b7e2828c9f7eac11afdbf6e979f6 Mon Sep 17 00:00:00 2001 From: nowrep Date: Sat, 25 Jan 2014 17:48:30 +0100 Subject: [PATCH] [SBI_JsIcon] Fix after 36724df3a69 Closes #1174 --- src/lib/webview/webpage.cpp | 10 +++++++++- src/lib/webview/webpage.h | 3 +++ src/plugins/StatusBarIcons/sbi_javascripticon.cpp | 14 ++++++++++++-- src/plugins/StatusBarIcons/sbi_javascripticon.h | 2 ++ 4 files changed, 26 insertions(+), 3 deletions(-) diff --git a/src/lib/webview/webpage.cpp b/src/lib/webview/webpage.cpp index 8ab1ebb2c..d824feca0 100644 --- a/src/lib/webview/webpage.cpp +++ b/src/lib/webview/webpage.cpp @@ -77,6 +77,8 @@ WebPage::WebPage(QObject* parent) , m_secureStatus(false) , m_adjustingScheduled(false) { + m_javaScriptEnabled = mApp->webSettings()->testAttribute(QWebSettings::JavascriptEnabled); + m_networkProxy = new NetworkManagerProxy(this); m_networkProxy->setPrimaryNetworkAccessManager(mApp->networkManager()); m_networkProxy->setPage(this); @@ -286,7 +288,7 @@ void WebPage::addJavaScriptObject() // Make sure all other sites have JavaScript set by user preferences // (JavaScript is enabled in WebPage::urlChanged) if (url().scheme() != QLatin1String("qupzilla")) { - settings()->setAttribute(QWebSettings::JavascriptEnabled, mApp->webSettings()->testAttribute(QWebSettings::JavascriptEnabled)); + settings()->setAttribute(QWebSettings::JavascriptEnabled, m_javaScriptEnabled); } if (url().toString() != QLatin1String("qupzilla:speeddial")) { @@ -996,6 +998,12 @@ void WebPage::javaScriptAlert(QWebFrame* originatingFrame, const QString &msg) #endif } +void WebPage::setJavaScriptEnabled(bool enabled) +{ + settings()->setAttribute(QWebSettings::JavascriptEnabled, enabled); + m_javaScriptEnabled = enabled; +} + QString WebPage::chooseFile(QWebFrame* originatingFrame, const QString &oldFile) { QString suggFileName; diff --git a/src/lib/webview/webpage.h b/src/lib/webview/webpage.h index d70902814..acc7bc2f0 100644 --- a/src/lib/webview/webpage.h +++ b/src/lib/webview/webpage.h @@ -63,6 +63,8 @@ public: bool javaScriptConfirm(QWebFrame* originatingFrame, const QString &msg); void javaScriptAlert(QWebFrame* originatingFrame, const QString &msg); + void setJavaScriptEnabled(bool enabled); + void addAdBlockRule(const AdBlockRule* rule, const QUrl &url); QVector adBlockedEntries() const; @@ -146,6 +148,7 @@ private: int m_loadProgress; bool m_blockAlerts; bool m_secureStatus; + bool m_javaScriptEnabled; bool m_adjustingScheduled; }; diff --git a/src/plugins/StatusBarIcons/sbi_javascripticon.cpp b/src/plugins/StatusBarIcons/sbi_javascripticon.cpp index 6a17f2319..4f456d089 100644 --- a/src/plugins/StatusBarIcons/sbi_javascripticon.cpp +++ b/src/plugins/StatusBarIcons/sbi_javascripticon.cpp @@ -55,6 +55,11 @@ void SBI_JavaScriptIcon::showMenu(const QPoint &point) menu.addAction(tr("Enable JavaScript (temporarily)"), this, SLOT(toggleJavaScript())); } + // JavaScript needs to be always enabled for qupzilla: sites + if (currentPage()->url().scheme() == QLatin1String("qupzilla")) { + menu.actions().at(1)->setEnabled(false); + } + menu.addSeparator(); menu.addAction(m_icon, tr("Global settings"))->setFont(boldFont); menu.addAction(tr("Manage JavaScript settings"), this, SLOT(openJavaScriptSettings())); @@ -76,7 +81,7 @@ void SBI_JavaScriptIcon::updateIcon() void SBI_JavaScriptIcon::toggleJavaScript() { bool current = currentPageSettings()->testAttribute(QWebSettings::JavascriptEnabled); - currentPageSettings()->setAttribute(QWebSettings::JavascriptEnabled, !current); + currentPage()->setJavaScriptEnabled(!current); p_QupZilla->weView()->reload(); @@ -89,7 +94,12 @@ void SBI_JavaScriptIcon::openJavaScriptSettings() dialog.exec(); } +WebPage* SBI_JavaScriptIcon::currentPage() +{ + return p_QupZilla->weView()->page(); +} + QWebSettings* SBI_JavaScriptIcon::currentPageSettings() { - return p_QupZilla->weView()->page()->settings(); + return currentPage()->settings(); } diff --git a/src/plugins/StatusBarIcons/sbi_javascripticon.h b/src/plugins/StatusBarIcons/sbi_javascripticon.h index 1a5771666..d5f5e5501 100644 --- a/src/plugins/StatusBarIcons/sbi_javascripticon.h +++ b/src/plugins/StatusBarIcons/sbi_javascripticon.h @@ -25,6 +25,7 @@ class QWebSettings; class QupZilla; +class WebPage; class SBI_JavaScriptIcon : public ClickableLabel { @@ -41,6 +42,7 @@ private slots: void openJavaScriptSettings(); private: + WebPage* currentPage(); QWebSettings* currentPageSettings(); QupZilla* p_QupZilla;