diff options
Diffstat (limited to 'src/plugins/coreplugin/locator/javascriptfilter.cpp')
-rw-r--r-- | src/plugins/coreplugin/locator/javascriptfilter.cpp | 20 |
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 { |