mirror of
https://invent.kde.org/network/falkon.git
synced 2024-09-21 17:52:10 +02:00
GreaseMonkey: Fix removing/updating userscripts
This commit is contained in:
parent
431610215d
commit
9c7bfb1c94
|
@ -138,7 +138,8 @@ void GM_Manager::enableScript(GM_Script* script)
|
|||
script->setEnabled(true);
|
||||
m_disabledScripts.removeOne(script->fullName());
|
||||
|
||||
mApp->webProfile()->scripts().insert(script->webScript());
|
||||
QWebEngineScriptCollection &collection = mApp->webProfile()->scripts();
|
||||
collection.insert(script->webScript());
|
||||
}
|
||||
|
||||
void GM_Manager::disableScript(GM_Script* script)
|
||||
|
@ -146,7 +147,8 @@ void GM_Manager::disableScript(GM_Script* script)
|
|||
script->setEnabled(false);
|
||||
m_disabledScripts.append(script->fullName());
|
||||
|
||||
mApp->webProfile()->scripts().remove(script->webScript());
|
||||
QWebEngineScriptCollection &collection = mApp->webProfile()->scripts();
|
||||
collection.remove(collection.findScript(script->fullName()));
|
||||
}
|
||||
|
||||
bool GM_Manager::addScript(GM_Script* script)
|
||||
|
@ -156,7 +158,10 @@ bool GM_Manager::addScript(GM_Script* script)
|
|||
}
|
||||
|
||||
m_scripts.append(script);
|
||||
mApp->webProfile()->scripts().insert(script->webScript());
|
||||
connect(script, &GM_Script::scriptChanged, this, &GM_Manager::scriptChanged);
|
||||
|
||||
QWebEngineScriptCollection &collection = mApp->webProfile()->scripts();
|
||||
collection.insert(script->webScript());
|
||||
|
||||
emit scriptsChanged();
|
||||
return true;
|
||||
|
@ -169,7 +174,9 @@ bool GM_Manager::removeScript(GM_Script* script, bool removeFile)
|
|||
}
|
||||
|
||||
m_scripts.removeOne(script);
|
||||
mApp->webProfile()->scripts().insert(script->webScript());
|
||||
|
||||
QWebEngineScriptCollection &collection = mApp->webProfile()->scripts();
|
||||
collection.remove(collection.findScript(script->fullName()));
|
||||
|
||||
m_disabledScripts.removeOne(script->fullName());
|
||||
|
||||
|
@ -229,6 +236,17 @@ void GM_Manager::load()
|
|||
//m_jsObject->setSettingsFile(m_settingsPath + QL1S("/extensions.ini"));
|
||||
}
|
||||
|
||||
void GM_Manager::scriptChanged()
|
||||
{
|
||||
GM_Script *script = qobject_cast<GM_Script*>(sender());
|
||||
if (!script)
|
||||
return;
|
||||
|
||||
QWebEngineScriptCollection &collection = mApp->webProfile()->scripts();
|
||||
collection.remove(collection.findScript(script->fullName()));
|
||||
collection.insert(script->webScript());
|
||||
}
|
||||
|
||||
bool GM_Manager::canRunOnScheme(const QString &scheme)
|
||||
{
|
||||
return (scheme == QLatin1String("http") || scheme == QLatin1String("https")
|
||||
|
|
|
@ -71,6 +71,7 @@ public slots:
|
|||
|
||||
private slots:
|
||||
void load();
|
||||
void scriptChanged();
|
||||
|
||||
private:
|
||||
QString m_settingsPath;
|
||||
|
|
|
@ -23,6 +23,7 @@
|
|||
|
||||
#include <QFile>
|
||||
#include <QStringList>
|
||||
#include <QWebEngineScript>
|
||||
#include <QCryptographicHash>
|
||||
|
||||
GM_Script::GM_Script(GM_Manager* manager, const QString &filePath)
|
||||
|
@ -135,7 +136,13 @@ QString GM_Script::fileName() const
|
|||
|
||||
QWebEngineScript GM_Script::webScript() const
|
||||
{
|
||||
return m_webScript;
|
||||
QWebEngineScript script;
|
||||
script.setName(fullName());
|
||||
script.setInjectionPoint(startAt() == DocumentStart ? QWebEngineScript::DocumentCreation : QWebEngineScript::DocumentReady);
|
||||
script.setWorldId(QWebEngineScript::MainWorld);
|
||||
script.setRunsOnSubFrames(!m_noframes);
|
||||
script.setSourceCode(QSL("%1\n%2\n%3").arg(m_metadata, m_manager->bootstrapScript(), m_script));
|
||||
return script;
|
||||
}
|
||||
|
||||
bool GM_Script::match(const QString &urlString)
|
||||
|
@ -285,11 +292,4 @@ void GM_Script::parseScript()
|
|||
const QString gmValues = m_manager->valuesScript().arg(nspace);
|
||||
|
||||
m_script = QSL("(function(){%1\n%2\n%3\n})();").arg(gmValues, m_manager->requireScripts(requireList), script);
|
||||
|
||||
// Create QWebEngineScript
|
||||
m_webScript.setName(fullName());
|
||||
m_webScript.setInjectionPoint(startAt() == DocumentStart ? QWebEngineScript::DocumentCreation : QWebEngineScript::DocumentReady);
|
||||
m_webScript.setWorldId(QWebEngineScript::MainWorld);
|
||||
m_webScript.setRunsOnSubFrames(!m_noframes);
|
||||
m_webScript.setSourceCode(QSL("%1\n%2\n%3").arg(m_metadata, m_manager->bootstrapScript(), m_script));
|
||||
}
|
||||
|
|
|
@ -23,9 +23,8 @@
|
|||
#include <QObject>
|
||||
#include <QVector>
|
||||
#include <QUrl>
|
||||
#include <QWebEngineScript>
|
||||
|
||||
class QWebFrame;
|
||||
class QWebEngineScript;
|
||||
|
||||
class GM_Manager;
|
||||
class GM_UrlMatcher;
|
||||
|
@ -95,8 +94,6 @@ private:
|
|||
QString m_fileName;
|
||||
bool m_enabled;
|
||||
bool m_valid;
|
||||
|
||||
QWebEngineScript m_webScript;
|
||||
};
|
||||
|
||||
#endif // GM_SCRIPT_H
|
||||
|
|
Loading…
Reference in New Issue
Block a user