Locator: Use QJSEngine for script locator filter

QJSEngine is interruptible since Qt 5.14. Make that the requirement for
the script locator filter and remove (optional) dependency on QtScript.

Change-Id: I3d6df04571441ddf152a213f0053c46e3cb317fa
Reviewed-by: André Hartmann <aha_1980@gmx.de>
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
This commit is contained in:
Eike Ziller
2020-03-04 09:22:04 +01:00
parent 995ba78fae
commit 7a3f5edfaf
5 changed files with 12 additions and 15 deletions

View File

@@ -179,9 +179,8 @@ extend_qtc_plugin(Core
)
extend_qtc_plugin(Core
CONDITION TARGET Qt5::Script
CONDITION Qt5_VERSION VERSION_GREATER_EQUAL 5.14.0
FEATURE_INFO "Script Locator filter"
DEPENDS Qt5::Script
DEFINES WITH_JAVASCRIPTFILTER
SOURCES
locator/javascriptfilter.cpp locator/javascriptfilter.h

View File

@@ -1,5 +1,6 @@
import qbs 1.0
import qbs.FileInfo
import qbs.Utilities
Project {
name: "Core"
@@ -17,15 +18,13 @@ Project {
condition: qbs.targetOS.contains("windows")
}
Depends { name: "Qt.script"; required: false }
Depends { name: "Utils" }
Depends { name: "Aggregation" }
Depends { name: "app_version_header" }
Properties {
condition: Qt.script.present
condition: Utilities.versionCompare(Qt.qml.version, "5.14.0") >= 0
cpp.defines: base.concat("WITH_JAVASCRIPTFILTER")
}
@@ -379,7 +378,7 @@ Project {
Group {
name: "Locator Javascript Filter"
condition: Qt.script.present
condition: Utilities.versionCompare(Qt.qml.version, "5.14.0") >= 0
prefix: "locator/"
files: [
"javascriptfilter.cpp",

View File

@@ -27,7 +27,7 @@
#include <QClipboard>
#include <QGuiApplication>
#include <QScriptEngine>
#include <QJSEngine>
namespace Core {
namespace Internal {
@@ -48,8 +48,8 @@ JavaScriptFilter::JavaScriptFilter()
m_abortTimer.setInterval(1000);
connect(&m_abortTimer, &QTimer::timeout, this, [this] {
m_aborted = true;
if (m_engine && m_engine->isEvaluating())
m_engine->abortEvaluation();
if (m_engine)
m_engine->setInterrupted(true);
});
}
@@ -63,6 +63,7 @@ void JavaScriptFilter::prepareSearch(const QString &entry)
if (!m_engine)
setupEngine();
m_engine->setInterrupted(false);
m_aborted = false;
m_abortTimer.start();
}
@@ -118,7 +119,7 @@ void JavaScriptFilter::refresh(QFutureInterface<void> &future)
void JavaScriptFilter::setupEngine()
{
m_engine.reset(new QScriptEngine);
m_engine.reset(new QJSEngine);
m_engine->evaluate(
"function abs(x) { return Math.abs(x); }\n"
"function acos(x) { return Math.acos(x); }\n"

View File

@@ -32,7 +32,7 @@
#include <memory>
QT_BEGIN_NAMESPACE
class QScriptEngine;
class QJSEngine;
QT_END_NAMESPACE
namespace Core {
@@ -55,7 +55,7 @@ public:
private:
void setupEngine();
mutable std::unique_ptr<QScriptEngine> m_engine;
mutable std::unique_ptr<QJSEngine> m_engine;
QTimer m_abortTimer;
bool m_aborted = false;
};

View File

@@ -38,9 +38,7 @@ SOURCES += \
FORMS += \
$$PWD/urllocatorfilter.ui
qtHaveModule(script) {
QT *= script
minQtVersion(5, 14, 0) {
DEFINES += WITH_JAVASCRIPTFILTER
HEADERS += \