aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/coreplugin/locator/javascriptfilter.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/coreplugin/locator/javascriptfilter.cpp')
-rw-r--r--src/plugins/coreplugin/locator/javascriptfilter.cpp20
1 files changed, 10 insertions, 10 deletions
diff --git a/src/plugins/coreplugin/locator/javascriptfilter.cpp b/src/plugins/coreplugin/locator/javascriptfilter.cpp
index a4c20e7a7e..6f88a9188a 100644
--- a/src/plugins/coreplugin/locator/javascriptfilter.cpp
+++ b/src/plugins/coreplugin/locator/javascriptfilter.cpp
@@ -28,7 +28,6 @@
#include <QClipboard>
#include <QGuiApplication>
#include <QScriptEngine>
-#include <QTimer>
namespace Core {
namespace Internal {
@@ -45,6 +44,13 @@ JavaScriptFilter::JavaScriptFilter()
setDisplayName(tr("Evaluate JavaScript"));
setIncludedByDefault(false);
setShortcutString("=");
+ m_abortTimer.setSingleShot(true);
+ m_abortTimer.setInterval(1000);
+ connect(&m_abortTimer, &QTimer::timeout, this, [this] {
+ m_aborted = true;
+ if (m_engine && m_engine->isEvaluating())
+ m_engine->abortEvaluation();
+ });
}
JavaScriptFilter::~JavaScriptFilter()
@@ -57,6 +63,8 @@ void JavaScriptFilter::prepareSearch(const QString &entry)
if (!m_engine)
setupEngine();
+ m_aborted = false;
+ m_abortTimer.start();
}
QList<LocatorFilterEntry> JavaScriptFilter::matchesFor(
@@ -68,16 +76,8 @@ QList<LocatorFilterEntry> JavaScriptFilter::matchesFor(
if (entry.trimmed().isEmpty()) {
entries.append({this, tr("Reset Engine"), QVariant(ResetEngine, nullptr)});
} else {
- bool aborted = false;
-
- QTimer::singleShot(1000, this, [this, &aborted]() {
- m_engine->abortEvaluation();
- aborted = true;
- });
-
const QString result = m_engine->evaluate(entry).toString();
-
- if (aborted) {
+ if (m_aborted) {
const QString message = entry + " = " + tr("Engine aborted after timeout.");
entries.append({this, message, QVariant(AbortEngine, nullptr)});
} else {