diff --git a/scripting/scripting.h b/scripting/scripting.h --- a/scripting/scripting.h +++ b/scripting/scripting.h @@ -60,7 +60,7 @@ AbstractScript(int id, QString scriptName, QString pluginName, QObject *parent = nullptr); ~AbstractScript(); QString fileName() const { - return m_scriptFile.fileName(); + return m_fileName; } const QString &pluginName() { return m_pluginName; @@ -153,9 +153,6 @@ void runningChanged(bool); protected: - QFile &scriptFile() { - return m_scriptFile; - } bool running() const { return m_running; } @@ -204,7 +201,7 @@ **/ QAction *createMenu(const QString &title, QScriptValue &items, QMenu *parent); int m_scriptId; - QFile m_scriptFile; + QString m_fileName; QString m_pluginName; bool m_running; QHash m_shortcutCallbacks; @@ -255,7 +252,7 @@ * Read the script from file into a byte array. * If file cannot be read an empty byte array is returned. **/ - QByteArray loadScriptFromFile(); + QByteArray loadScriptFromFile(const QString &fileName); QScriptEngine *m_engine; bool m_starting; QScopedPointer m_agent; diff --git a/scripting/scripting.cpp b/scripting/scripting.cpp --- a/scripting/scripting.cpp +++ b/scripting/scripting.cpp @@ -231,9 +231,9 @@ : QObject(parent) , m_scriptId(id) , m_pluginName(pluginName) + , m_fileName(scriptName) , m_running(false) { - m_scriptFile.setFileName(scriptName); if (m_pluginName.isNull()) { m_pluginName = scriptName; } @@ -255,7 +255,7 @@ void KWin::AbstractScript::printMessage(const QString &message) { - qCDebug(KWIN_SCRIPTING) << scriptFile().fileName() << ":" << message; + qCDebug(KWIN_SCRIPTING) << fileName() << ":" << message; emit print(message); } @@ -468,16 +468,16 @@ m_starting = true; QFutureWatcher *watcher = new QFutureWatcher(this); connect(watcher, SIGNAL(finished()), SLOT(slotScriptLoadedFromFile())); - watcher->setFuture(QtConcurrent::run(this, &KWin::Script::loadScriptFromFile)); + watcher->setFuture(QtConcurrent::run(this, &KWin::Script::loadScriptFromFile, fileName())); } -QByteArray KWin::Script::loadScriptFromFile() +QByteArray KWin::Script::loadScriptFromFile(const QString &fileName) { - if (!scriptFile().open(QIODevice::ReadOnly)) { + QFile file(fileName); + if (!file.open(QIODevice::ReadOnly)) { return QByteArray(); } - QByteArray result(scriptFile().readAll()); - scriptFile().close(); + QByteArray result(file.readAll()); return result; } @@ -591,7 +591,7 @@ return; } - m_component->loadUrl(QUrl::fromLocalFile(scriptFile().fileName())); + m_component->loadUrl(QUrl::fromLocalFile(fileName())); if (m_component->isLoading()) { connect(m_component, &QQmlComponent::statusChanged, this, &DeclarativeScript::createComponent); } else {