From 2e853beef489f9468c95e93f364669d6a12471e4 Mon Sep 17 00:00:00 2001 From: nowrep Date: Tue, 2 Apr 2013 11:57:31 +0200 Subject: [PATCH] [GreaseMonkey] Fixed loading invalid script when script file is deleted Also fixed copyright in gm_jsobect.{cpp,h} --- src/plugins/GreaseMonkey/gm_jsobject.cpp | 2 +- src/plugins/GreaseMonkey/gm_jsobject.h | 2 +- src/plugins/GreaseMonkey/gm_manager.cpp | 2 +- src/plugins/GreaseMonkey/gm_plugin.cpp | 2 +- src/plugins/GreaseMonkey/gm_script.cpp | 20 ++++++++++++++------ 5 files changed, 18 insertions(+), 10 deletions(-) diff --git a/src/plugins/GreaseMonkey/gm_jsobject.cpp b/src/plugins/GreaseMonkey/gm_jsobject.cpp index 500fa5dac..ba2e4cad2 100644 --- a/src/plugins/GreaseMonkey/gm_jsobject.cpp +++ b/src/plugins/GreaseMonkey/gm_jsobject.cpp @@ -1,5 +1,5 @@ /* ============================================================ -* QupZilla - WebKit based browser +* GreaseMonkey plugin for QupZilla * Copyright (C) 2013 David Rosca * * This program is free software: you can redistribute it and/or modify diff --git a/src/plugins/GreaseMonkey/gm_jsobject.h b/src/plugins/GreaseMonkey/gm_jsobject.h index f9323799d..bc6e30964 100644 --- a/src/plugins/GreaseMonkey/gm_jsobject.h +++ b/src/plugins/GreaseMonkey/gm_jsobject.h @@ -1,5 +1,5 @@ /* ============================================================ -* QupZilla - WebKit based browser +* GreaseMonkey plugin for QupZilla * Copyright (C) 2013 David Rosca * * This program is free software: you can redistribute it and/or modify diff --git a/src/plugins/GreaseMonkey/gm_manager.cpp b/src/plugins/GreaseMonkey/gm_manager.cpp index 007b3f25d..f1739f28d 100644 --- a/src/plugins/GreaseMonkey/gm_manager.cpp +++ b/src/plugins/GreaseMonkey/gm_manager.cpp @@ -139,7 +139,7 @@ void GM_Manager::disableScript(GM_Script* script) bool GM_Manager::addScript(GM_Script* script) { - if (!script) { + if (!script || !script->isValid()) { return false; } diff --git a/src/plugins/GreaseMonkey/gm_plugin.cpp b/src/plugins/GreaseMonkey/gm_plugin.cpp index b06ab2ec2..1f992883a 100644 --- a/src/plugins/GreaseMonkey/gm_plugin.cpp +++ b/src/plugins/GreaseMonkey/gm_plugin.cpp @@ -38,7 +38,7 @@ PluginSpec GM_Plugin::pluginSpec() spec.name = "GreaseMonkey"; spec.info = "Userscripts for QupZilla"; spec.description = "Provides support for userscripts (www.userscripts.org)"; - spec.version = "0.3.0"; + spec.version = "0.3.1"; spec.author = "David Rosca "; spec.icon = QPixmap(":gm/data/icon.png"); spec.hasSettings = true; diff --git a/src/plugins/GreaseMonkey/gm_script.cpp b/src/plugins/GreaseMonkey/gm_script.cpp index 00c7ef8e0..156f4443f 100644 --- a/src/plugins/GreaseMonkey/gm_script.cpp +++ b/src/plugins/GreaseMonkey/gm_script.cpp @@ -30,7 +30,11 @@ GM_Script::GM_Script(GM_Manager* manager, const QString &filePath) : QObject(manager) , m_manager(manager) , m_fileWatcher(new QFileSystemWatcher(this)) + , m_namespace("GreaseMonkeyNS") + , m_startAt(DocumentEnd) , m_fileName(filePath) + , m_enabled(true) + , m_valid(false) { parseScript(); @@ -146,6 +150,10 @@ void GM_Script::watchedFileChanged(const QString &file) if (m_fileName == file) { parseScript(); + if (!isValid()) { + return; + } + m_manager->removeScript(this, false); m_manager->addScript(this); } @@ -153,6 +161,12 @@ void GM_Script::watchedFileChanged(const QString &file) void GM_Script::parseScript() { + QFile file(m_fileName); + if (!file.open(QFile::ReadOnly)) { + qWarning() << "GreaseMonkey: Cannot open file for reading" << m_fileName; + return; + } + m_name.clear(); m_namespace = "GreaseMonkeyNS"; m_description.clear(); @@ -164,12 +178,6 @@ void GM_Script::parseScript() m_enabled = true; m_valid = false; - QFile file(m_fileName); - if (!file.open(QFile::ReadOnly)) { - qWarning() << "GreaseMonkey: Cannot open file for reading" << m_fileName; - return; - } - if (!m_fileWatcher->files().contains(m_fileName)) { m_fileWatcher->addPath(m_fileName); }