forked from qt-creator/qt-creator
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:
@@ -179,9 +179,8 @@ extend_qtc_plugin(Core
|
|||||||
)
|
)
|
||||||
|
|
||||||
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"
|
FEATURE_INFO "Script Locator filter"
|
||||||
DEPENDS Qt5::Script
|
|
||||||
DEFINES WITH_JAVASCRIPTFILTER
|
DEFINES WITH_JAVASCRIPTFILTER
|
||||||
SOURCES
|
SOURCES
|
||||||
locator/javascriptfilter.cpp locator/javascriptfilter.h
|
locator/javascriptfilter.cpp locator/javascriptfilter.h
|
||||||
|
@@ -1,5 +1,6 @@
|
|||||||
import qbs 1.0
|
import qbs 1.0
|
||||||
import qbs.FileInfo
|
import qbs.FileInfo
|
||||||
|
import qbs.Utilities
|
||||||
|
|
||||||
Project {
|
Project {
|
||||||
name: "Core"
|
name: "Core"
|
||||||
@@ -17,15 +18,13 @@ Project {
|
|||||||
condition: qbs.targetOS.contains("windows")
|
condition: qbs.targetOS.contains("windows")
|
||||||
}
|
}
|
||||||
|
|
||||||
Depends { name: "Qt.script"; required: false }
|
|
||||||
|
|
||||||
Depends { name: "Utils" }
|
Depends { name: "Utils" }
|
||||||
Depends { name: "Aggregation" }
|
Depends { name: "Aggregation" }
|
||||||
|
|
||||||
Depends { name: "app_version_header" }
|
Depends { name: "app_version_header" }
|
||||||
|
|
||||||
Properties {
|
Properties {
|
||||||
condition: Qt.script.present
|
condition: Utilities.versionCompare(Qt.qml.version, "5.14.0") >= 0
|
||||||
cpp.defines: base.concat("WITH_JAVASCRIPTFILTER")
|
cpp.defines: base.concat("WITH_JAVASCRIPTFILTER")
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -379,7 +378,7 @@ Project {
|
|||||||
|
|
||||||
Group {
|
Group {
|
||||||
name: "Locator Javascript Filter"
|
name: "Locator Javascript Filter"
|
||||||
condition: Qt.script.present
|
condition: Utilities.versionCompare(Qt.qml.version, "5.14.0") >= 0
|
||||||
prefix: "locator/"
|
prefix: "locator/"
|
||||||
files: [
|
files: [
|
||||||
"javascriptfilter.cpp",
|
"javascriptfilter.cpp",
|
||||||
|
@@ -27,7 +27,7 @@
|
|||||||
|
|
||||||
#include <QClipboard>
|
#include <QClipboard>
|
||||||
#include <QGuiApplication>
|
#include <QGuiApplication>
|
||||||
#include <QScriptEngine>
|
#include <QJSEngine>
|
||||||
|
|
||||||
namespace Core {
|
namespace Core {
|
||||||
namespace Internal {
|
namespace Internal {
|
||||||
@@ -48,8 +48,8 @@ JavaScriptFilter::JavaScriptFilter()
|
|||||||
m_abortTimer.setInterval(1000);
|
m_abortTimer.setInterval(1000);
|
||||||
connect(&m_abortTimer, &QTimer::timeout, this, [this] {
|
connect(&m_abortTimer, &QTimer::timeout, this, [this] {
|
||||||
m_aborted = true;
|
m_aborted = true;
|
||||||
if (m_engine && m_engine->isEvaluating())
|
if (m_engine)
|
||||||
m_engine->abortEvaluation();
|
m_engine->setInterrupted(true);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -63,6 +63,7 @@ void JavaScriptFilter::prepareSearch(const QString &entry)
|
|||||||
|
|
||||||
if (!m_engine)
|
if (!m_engine)
|
||||||
setupEngine();
|
setupEngine();
|
||||||
|
m_engine->setInterrupted(false);
|
||||||
m_aborted = false;
|
m_aborted = false;
|
||||||
m_abortTimer.start();
|
m_abortTimer.start();
|
||||||
}
|
}
|
||||||
@@ -118,7 +119,7 @@ void JavaScriptFilter::refresh(QFutureInterface<void> &future)
|
|||||||
|
|
||||||
void JavaScriptFilter::setupEngine()
|
void JavaScriptFilter::setupEngine()
|
||||||
{
|
{
|
||||||
m_engine.reset(new QScriptEngine);
|
m_engine.reset(new QJSEngine);
|
||||||
m_engine->evaluate(
|
m_engine->evaluate(
|
||||||
"function abs(x) { return Math.abs(x); }\n"
|
"function abs(x) { return Math.abs(x); }\n"
|
||||||
"function acos(x) { return Math.acos(x); }\n"
|
"function acos(x) { return Math.acos(x); }\n"
|
||||||
|
@@ -32,7 +32,7 @@
|
|||||||
#include <memory>
|
#include <memory>
|
||||||
|
|
||||||
QT_BEGIN_NAMESPACE
|
QT_BEGIN_NAMESPACE
|
||||||
class QScriptEngine;
|
class QJSEngine;
|
||||||
QT_END_NAMESPACE
|
QT_END_NAMESPACE
|
||||||
|
|
||||||
namespace Core {
|
namespace Core {
|
||||||
@@ -55,7 +55,7 @@ public:
|
|||||||
private:
|
private:
|
||||||
void setupEngine();
|
void setupEngine();
|
||||||
|
|
||||||
mutable std::unique_ptr<QScriptEngine> m_engine;
|
mutable std::unique_ptr<QJSEngine> m_engine;
|
||||||
QTimer m_abortTimer;
|
QTimer m_abortTimer;
|
||||||
bool m_aborted = false;
|
bool m_aborted = false;
|
||||||
};
|
};
|
||||||
|
@@ -38,9 +38,7 @@ SOURCES += \
|
|||||||
FORMS += \
|
FORMS += \
|
||||||
$$PWD/urllocatorfilter.ui
|
$$PWD/urllocatorfilter.ui
|
||||||
|
|
||||||
qtHaveModule(script) {
|
minQtVersion(5, 14, 0) {
|
||||||
QT *= script
|
|
||||||
|
|
||||||
DEFINES += WITH_JAVASCRIPTFILTER
|
DEFINES += WITH_JAVASCRIPTFILTER
|
||||||
|
|
||||||
HEADERS += \
|
HEADERS += \
|
||||||
|
Reference in New Issue
Block a user