summaryrefslogtreecommitdiff
path: root/src/plugins/texteditor
diff options
context:
space:
mode:
authorEike Ziller <eike.ziller@digia.com>2014-09-19 16:08:49 +0200
committerEike Ziller <eike.ziller@digia.com>2014-09-23 10:16:37 +0200
commit91239baaba07aec3a8ef1a559ef996bd3393e6cd (patch)
tree37fad7ecff4956af8fbf9523e9142fef780eae28 /src/plugins/texteditor
parentd6c73653ed14fb1401acec6f9a9f86888a3238e4 (diff)
downloadqt-creator-91239baaba07aec3a8ef1a559ef996bd3393e6cd.tar.gz
Locator filters: Fix various thread-safety issues
Introduces a "prepareSearch" method for locator filters that is called on the UI thread prior to the threaded matching. Fix various small thread-safety issues in the various filters. Change-Id: If5ae7d205e126d367420936a93f8d9a84496edb8 Reviewed-by: Daniel Teske <daniel.teske@digia.com>
Diffstat (limited to 'src/plugins/texteditor')
-rw-r--r--src/plugins/texteditor/linenumberfilter.cpp8
-rw-r--r--src/plugins/texteditor/linenumberfilter.h4
2 files changed, 11 insertions, 1 deletions
diff --git a/src/plugins/texteditor/linenumberfilter.cpp b/src/plugins/texteditor/linenumberfilter.cpp
index 4be1ef5efd..d62ca62804 100644
--- a/src/plugins/texteditor/linenumberfilter.cpp
+++ b/src/plugins/texteditor/linenumberfilter.cpp
@@ -56,6 +56,12 @@ LineNumberFilter::LineNumberFilter(QObject *parent)
setIncludedByDefault(true);
}
+void LineNumberFilter::prepareSearch(const QString &entry)
+{
+ Q_UNUSED(entry)
+ m_hasCurrentEditor = EditorManager::currentEditor() != 0;
+}
+
QList<LocatorFilterEntry> LineNumberFilter::matchesFor(QFutureInterface<Core::LocatorFilterEntry> &, const QString &entry)
{
QList<LocatorFilterEntry> value;
@@ -70,7 +76,7 @@ QList<LocatorFilterEntry> LineNumberFilter::matchesFor(QFutureInterface<Core::Lo
column = lineAndColumn.at(1).toInt(&ok);
if (!ok)
return value;
- if (EditorManager::currentEditor() && (line > 0 || column > 0)) {
+ if (m_hasCurrentEditor && (line > 0 || column > 0)) {
LineColumn data;
data.first = line;
data.second = column - 1; // column API is 0-based
diff --git a/src/plugins/texteditor/linenumberfilter.h b/src/plugins/texteditor/linenumberfilter.h
index 3806d18f33..ede35e5433 100644
--- a/src/plugins/texteditor/linenumberfilter.h
+++ b/src/plugins/texteditor/linenumberfilter.h
@@ -48,9 +48,13 @@ class LineNumberFilter : public Core::ILocatorFilter
public:
explicit LineNumberFilter(QObject *parent = 0);
+ void prepareSearch(const QString &entry);
QList<Core::LocatorFilterEntry> matchesFor(QFutureInterface<Core::LocatorFilterEntry> &future, const QString &entry);
void accept(Core::LocatorFilterEntry selection) const;
void refresh(QFutureInterface<void> &) {}
+
+private:
+ bool m_hasCurrentEditor;
};
} // namespace Internal