From 7a3f5edfafaed19f71cd08655b6bbaa770b39f12 Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Wed, 4 Mar 2020 09:22:04 +0100 Subject: [PATCH] Locator: Use QJSEngine for script locator filter MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 Reviewed-by: Christian Kandeler --- src/plugins/coreplugin/CMakeLists.txt | 3 +-- src/plugins/coreplugin/coreplugin.qbs | 7 +++---- src/plugins/coreplugin/locator/javascriptfilter.cpp | 9 +++++---- src/plugins/coreplugin/locator/javascriptfilter.h | 4 ++-- src/plugins/coreplugin/locator/locator.pri | 4 +--- 5 files changed, 12 insertions(+), 15 deletions(-) diff --git a/src/plugins/coreplugin/CMakeLists.txt b/src/plugins/coreplugin/CMakeLists.txt index 06194cddf57..0c071e8ef76 100644 --- a/src/plugins/coreplugin/CMakeLists.txt +++ b/src/plugins/coreplugin/CMakeLists.txt @@ -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 diff --git a/src/plugins/coreplugin/coreplugin.qbs b/src/plugins/coreplugin/coreplugin.qbs index 8afe2f0aa8f..dc54a0a4dff 100644 --- a/src/plugins/coreplugin/coreplugin.qbs +++ b/src/plugins/coreplugin/coreplugin.qbs @@ -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", diff --git a/src/plugins/coreplugin/locator/javascriptfilter.cpp b/src/plugins/coreplugin/locator/javascriptfilter.cpp index ab6727b8a29..b1f7f7719fa 100644 --- a/src/plugins/coreplugin/locator/javascriptfilter.cpp +++ b/src/plugins/coreplugin/locator/javascriptfilter.cpp @@ -27,7 +27,7 @@ #include #include -#include +#include 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 &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" diff --git a/src/plugins/coreplugin/locator/javascriptfilter.h b/src/plugins/coreplugin/locator/javascriptfilter.h index a11b9c0f21d..28ef4476040 100644 --- a/src/plugins/coreplugin/locator/javascriptfilter.h +++ b/src/plugins/coreplugin/locator/javascriptfilter.h @@ -32,7 +32,7 @@ #include QT_BEGIN_NAMESPACE -class QScriptEngine; +class QJSEngine; QT_END_NAMESPACE namespace Core { @@ -55,7 +55,7 @@ public: private: void setupEngine(); - mutable std::unique_ptr m_engine; + mutable std::unique_ptr m_engine; QTimer m_abortTimer; bool m_aborted = false; }; diff --git a/src/plugins/coreplugin/locator/locator.pri b/src/plugins/coreplugin/locator/locator.pri index 2223836c19f..ae5cf6e440a 100644 --- a/src/plugins/coreplugin/locator/locator.pri +++ b/src/plugins/coreplugin/locator/locator.pri @@ -38,9 +38,7 @@ SOURCES += \ FORMS += \ $$PWD/urllocatorfilter.ui -qtHaveModule(script) { - QT *= script - +minQtVersion(5, 14, 0) { DEFINES += WITH_JAVASCRIPTFILTER HEADERS += \