forked from qt-creator/qt-creator
LocatorFilterEntry: Discourage the use of internalData
Drop internalData from c'tor. The internalData is going to be removed, soon. Drop also the icon arg from c'tor since LocatorFilterEntry instances are usually created in non-main thread, while operating on QIcon instances isn't really safe in non-main thread. The use of QIcon inside this struct is a subject to change in the future, in a way like it was done in other parts of code that generated icons from non-main thread. Change-Id: Ic6aa719a64e5fbd65883c54149796057c632780e Reviewed-by: David Schulz <david.schulz@qt.io> Reviewed-by: <github-actions-qt-creator@cristianadam.eu> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
This commit is contained in:
@@ -59,8 +59,8 @@ void BookmarkFilter::prepareSearch(const QString &entry)
|
|||||||
const Bookmark *bookmark = m_manager->bookmarkForIndex(idx);
|
const Bookmark *bookmark = m_manager->bookmarkForIndex(idx);
|
||||||
const QString filename = bookmark->filePath().fileName();
|
const QString filename = bookmark->filePath().fileName();
|
||||||
LocatorFilterEntry filterEntry(this,
|
LocatorFilterEntry filterEntry(this,
|
||||||
QString("%1:%2").arg(filename).arg(bookmark->lineNumber()),
|
QString("%1:%2").arg(filename).arg(bookmark->lineNumber()));
|
||||||
QVariant::fromValue(idx));
|
filterEntry.internalData = QVariant::fromValue(idx);
|
||||||
if (!bookmark->note().isEmpty())
|
if (!bookmark->note().isEmpty())
|
||||||
filterEntry.extraInfo = bookmark->note();
|
filterEntry.extraInfo = bookmark->note();
|
||||||
else if (!bookmark->lineText().isEmpty())
|
else if (!bookmark->lineText().isEmpty())
|
||||||
|
|||||||
@@ -215,7 +215,9 @@ void ActionsFilter::collectEntriesForAction(QAction *action,
|
|||||||
}
|
}
|
||||||
} else if (!text.isEmpty()) {
|
} else if (!text.isEmpty()) {
|
||||||
const ActionFilterEntryData data{action, {}};
|
const ActionFilterEntryData data{action, {}};
|
||||||
LocatorFilterEntry filterEntry(this, text, QVariant::fromValue(data), action->icon());
|
LocatorFilterEntry filterEntry(this, text);
|
||||||
|
filterEntry.internalData = QVariant::fromValue(data);
|
||||||
|
filterEntry.displayIcon = action->icon();
|
||||||
filterEntry.extraInfo = path.join(" > ");
|
filterEntry.extraInfo = path.join(" > ");
|
||||||
updateEntry(action, filterEntry);
|
updateEntry(action, filterEntry);
|
||||||
}
|
}
|
||||||
@@ -241,8 +243,10 @@ void ActionsFilter::collectEntriesForCommands()
|
|||||||
|
|
||||||
const QString identifier = command->id().toString();
|
const QString identifier = command->id().toString();
|
||||||
const QStringList path = identifier.split(QLatin1Char('.'));
|
const QStringList path = identifier.split(QLatin1Char('.'));
|
||||||
const ActionFilterEntryData data{action, command->id()};
|
const ActionFilterEntryData data{};
|
||||||
LocatorFilterEntry filterEntry(this, text, QVariant::fromValue(data), action->icon());
|
LocatorFilterEntry filterEntry(this, text);
|
||||||
|
filterEntry.internalData = QVariant::fromValue(ActionFilterEntryData{action, command->id()});
|
||||||
|
filterEntry.displayIcon = action->icon();
|
||||||
filterEntry.displayExtra = command->keySequence().toString(QKeySequence::NativeText);
|
filterEntry.displayExtra = command->keySequence().toString(QKeySequence::NativeText);
|
||||||
if (path.size() >= 2)
|
if (path.size() >= 2)
|
||||||
filterEntry.extraInfo = path.mid(0, path.size() - 1).join(" > ");
|
filterEntry.extraInfo = path.mid(0, path.size() - 1).join(" > ");
|
||||||
@@ -260,7 +264,9 @@ void ActionsFilter::collectEntriesForLastTriggered()
|
|||||||
if (!data.action || !m_enabledActions.contains(data.action))
|
if (!data.action || !m_enabledActions.contains(data.action))
|
||||||
continue;
|
continue;
|
||||||
const QString text = actionText(data.action);
|
const QString text = actionText(data.action);
|
||||||
LocatorFilterEntry filterEntry(this, text, QVariant::fromValue(data), data.action->icon());
|
LocatorFilterEntry filterEntry(this, text);
|
||||||
|
filterEntry.internalData = QVariant::fromValue(data);
|
||||||
|
filterEntry.displayIcon = data.action->icon();
|
||||||
updateEntry(data.action, filterEntry);
|
updateEntry(data.action, filterEntry);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -77,7 +77,8 @@ QList<LocatorFilterEntry> CommandLocator::matchesFor(QFutureInterface<LocatorFil
|
|||||||
const QString text = Utils::stripAccelerator(pair.second);
|
const QString text = Utils::stripAccelerator(pair.second);
|
||||||
const int index = text.indexOf(entry, 0, entryCaseSensitivity);
|
const int index = text.indexOf(entry, 0, entryCaseSensitivity);
|
||||||
if (index >= 0) {
|
if (index >= 0) {
|
||||||
LocatorFilterEntry filterEntry(this, text, QVariant(pair.first));
|
LocatorFilterEntry filterEntry(this, text);
|
||||||
|
filterEntry.internalData = QVariant(pair.first);
|
||||||
filterEntry.highlightInfo = {index, int(entry.length())};
|
filterEntry.highlightInfo = {index, int(entry.length())};
|
||||||
|
|
||||||
if (index == 0)
|
if (index == 0)
|
||||||
|
|||||||
@@ -66,7 +66,8 @@ void ExternalToolsFilter::prepareSearch(const QString &entry)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (index >= 0) {
|
if (index >= 0) {
|
||||||
LocatorFilterEntry filterEntry(this, tool->displayName(), QVariant::fromValue(tool));
|
LocatorFilterEntry filterEntry(this, tool->displayName());
|
||||||
|
filterEntry.internalData = QVariant::fromValue(tool);
|
||||||
filterEntry.extraInfo = tool->description();
|
filterEntry.extraInfo = tool->description();
|
||||||
filterEntry.highlightInfo = LocatorFilterEntry::HighlightInfo(index, entry.length(), hDataType);
|
filterEntry.highlightInfo = LocatorFilterEntry::HighlightInfo(index, entry.length(), hDataType);
|
||||||
|
|
||||||
@@ -78,7 +79,7 @@ void ExternalToolsFilter::prepareSearch(const QString &entry)
|
|||||||
goodEntries.append(filterEntry);
|
goodEntries.append(filterEntry);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
LocatorFilterEntry configEntry(this, "Configure External Tool...", {});
|
LocatorFilterEntry configEntry(this, "Configure External Tool...");
|
||||||
configEntry.extraInfo = "Opens External Tool settings";
|
configEntry.extraInfo = "Opens External Tool settings";
|
||||||
m_results = {};
|
m_results = {};
|
||||||
m_results << bestEntries << betterEntries << goodEntries << configEntry;
|
m_results << bestEntries << betterEntries << goodEntries << configEntry;
|
||||||
|
|||||||
@@ -72,14 +72,9 @@ public:
|
|||||||
|
|
||||||
LocatorFilterEntry() = default;
|
LocatorFilterEntry() = default;
|
||||||
|
|
||||||
LocatorFilterEntry(ILocatorFilter *fromFilter,
|
LocatorFilterEntry(ILocatorFilter *fromFilter, const QString &name)
|
||||||
const QString &name,
|
|
||||||
const QVariant &data = {},
|
|
||||||
std::optional<QIcon> icon = std::nullopt)
|
|
||||||
: filter(fromFilter)
|
: filter(fromFilter)
|
||||||
, displayName(name)
|
, displayName(name)
|
||||||
, internalData(data)
|
|
||||||
, displayIcon(icon)
|
|
||||||
{}
|
{}
|
||||||
|
|
||||||
/* backpointer to creating filter */
|
/* backpointer to creating filter */
|
||||||
@@ -93,7 +88,7 @@ public:
|
|||||||
/* additional tooltip */
|
/* additional tooltip */
|
||||||
QString toolTip;
|
QString toolTip;
|
||||||
/* can be used by the filter to save more information about the entry */
|
/* can be used by the filter to save more information about the entry */
|
||||||
QVariant internalData;
|
QVariant internalData; // DON'T USE IN NEW CODE, IT'S GOING TO BE REMOVED, SOON...
|
||||||
/* icon to display along with the entry */
|
/* icon to display along with the entry */
|
||||||
std::optional<QIcon> displayIcon;
|
std::optional<QIcon> displayIcon;
|
||||||
/* file path, if the entry is related to a file, is used e.g. for resolving a file icon */
|
/* file path, if the entry is related to a file, is used e.g. for resolving a file icon */
|
||||||
|
|||||||
@@ -52,17 +52,25 @@ QList<LocatorFilterEntry> JavaScriptFilter::matchesFor(
|
|||||||
|
|
||||||
QList<LocatorFilterEntry> entries;
|
QList<LocatorFilterEntry> entries;
|
||||||
if (entry.trimmed().isEmpty()) {
|
if (entry.trimmed().isEmpty()) {
|
||||||
entries.append({this, Tr::tr("Reset Engine"), QVariant::fromValue(EngineAction::Reset)});
|
LocatorFilterEntry entry{this, Tr::tr("Reset Engine")};
|
||||||
|
entry.internalData = QVariant::fromValue(EngineAction::Reset);
|
||||||
|
entries.append(entry);
|
||||||
} else {
|
} else {
|
||||||
const QString result = m_engine->evaluate(entry).toString();
|
const QString result = m_engine->evaluate(entry).toString();
|
||||||
if (m_aborted) {
|
if (m_aborted) {
|
||||||
const QString message = entry + " = " + Tr::tr("Engine aborted after timeout.");
|
const QString message = entry + " = " + Tr::tr("Engine aborted after timeout.");
|
||||||
entries.append({this, message, QVariant::fromValue(EngineAction::Abort)});
|
LocatorFilterEntry entry(this, message);
|
||||||
|
entry.internalData = QVariant::fromValue(EngineAction::Abort);
|
||||||
|
entries.append(entry);
|
||||||
} else {
|
} else {
|
||||||
const QString expression = entry + " = " + result;
|
const QString expression = entry + " = " + result;
|
||||||
entries.append({this, expression});
|
entries.append({this, expression});
|
||||||
entries.append({this, Tr::tr("Copy to clipboard: %1").arg(result), result});
|
LocatorFilterEntry resultEntry(this, Tr::tr("Copy to clipboard: %1").arg(result));
|
||||||
entries.append({this, Tr::tr("Copy to clipboard: %1").arg(expression), expression});
|
resultEntry.internalData = result;
|
||||||
|
entries.append(resultEntry);
|
||||||
|
LocatorFilterEntry expressionEntry(this, Tr::tr("Copy to clipboard: %1").arg(expression));
|
||||||
|
resultEntry.internalData = expression;
|
||||||
|
entries.append(expressionEntry);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -60,10 +60,9 @@ QList<LocatorFilterEntry> LocatorFiltersFilter::matchesFor(QFutureInterface<Loca
|
|||||||
for (int i = 0; i < m_filterShortcutStrings.size(); ++i) {
|
for (int i = 0; i < m_filterShortcutStrings.size(); ++i) {
|
||||||
if (future.isCanceled())
|
if (future.isCanceled())
|
||||||
break;
|
break;
|
||||||
LocatorFilterEntry filterEntry(this,
|
LocatorFilterEntry filterEntry(this, m_filterShortcutStrings.at(i));
|
||||||
m_filterShortcutStrings.at(i),
|
filterEntry.internalData = i;
|
||||||
i,
|
filterEntry.displayIcon = m_icon;
|
||||||
m_icon);
|
|
||||||
filterEntry.extraInfo = m_filterDisplayNames.at(i);
|
filterEntry.extraInfo = m_filterDisplayNames.at(i);
|
||||||
filterEntry.toolTip = m_filterDescriptions.at(i);
|
filterEntry.toolTip = m_filterDescriptions.at(i);
|
||||||
filterEntry.displayExtra = m_filterKeyboardShortcuts.at(i);
|
filterEntry.displayExtra = m_filterKeyboardShortcuts.at(i);
|
||||||
|
|||||||
@@ -87,7 +87,8 @@ QList<LocatorFilterEntry> CppCurrentDocumentFilter::matchesFor(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
LocatorFilterEntry filterEntry(this, name, {}, info->icon());
|
LocatorFilterEntry filterEntry(this, name);
|
||||||
|
filterEntry.displayIcon = info->icon();
|
||||||
filterEntry.linkForEditor = {info->filePath(), info->line(), info->column()};
|
filterEntry.linkForEditor = {info->filePath(), info->line(), info->column()};
|
||||||
filterEntry.extraInfo = extraInfo;
|
filterEntry.extraInfo = extraInfo;
|
||||||
if (match.hasMatch()) {
|
if (match.hasMatch()) {
|
||||||
|
|||||||
@@ -25,7 +25,8 @@ CppLocatorFilter::CppLocatorFilter()
|
|||||||
|
|
||||||
LocatorFilterEntry CppLocatorFilter::filterEntryFromIndexItem(IndexItem::Ptr info)
|
LocatorFilterEntry CppLocatorFilter::filterEntryFromIndexItem(IndexItem::Ptr info)
|
||||||
{
|
{
|
||||||
LocatorFilterEntry filterEntry(this, info->scopedSymbolName(), {}, info->icon());
|
LocatorFilterEntry filterEntry(this, info->scopedSymbolName());
|
||||||
|
filterEntry.displayIcon = info->icon();
|
||||||
filterEntry.linkForEditor = {info->filePath(), info->line(), info->column()};
|
filterEntry.linkForEditor = {info->filePath(), info->line(), info->column()};
|
||||||
if (info->type() == IndexItem::Class || info->type() == IndexItem::Enum)
|
if (info->type() == IndexItem::Class || info->type() == IndexItem::Enum)
|
||||||
filterEntry.extraInfo = info->shortNativeFilePath();
|
filterEntry.extraInfo = info->shortNativeFilePath();
|
||||||
@@ -120,7 +121,8 @@ CppClassesFilter::CppClassesFilter()
|
|||||||
|
|
||||||
LocatorFilterEntry CppClassesFilter::filterEntryFromIndexItem(IndexItem::Ptr info)
|
LocatorFilterEntry CppClassesFilter::filterEntryFromIndexItem(IndexItem::Ptr info)
|
||||||
{
|
{
|
||||||
LocatorFilterEntry filterEntry(this, info->symbolName(), {}, info->icon());
|
LocatorFilterEntry filterEntry(this, info->symbolName());
|
||||||
|
filterEntry.displayIcon = info->icon();
|
||||||
filterEntry.linkForEditor = {info->filePath(), info->line(), info->column()};
|
filterEntry.linkForEditor = {info->filePath(), info->line(), info->column()};
|
||||||
filterEntry.extraInfo = info->symbolScope().isEmpty()
|
filterEntry.extraInfo = info->symbolScope().isEmpty()
|
||||||
? info->shortNativeFilePath()
|
? info->shortNativeFilePath()
|
||||||
@@ -148,7 +150,8 @@ LocatorFilterEntry CppFunctionsFilter::filterEntryFromIndexItem(IndexItem::Ptr i
|
|||||||
extraInfo.append(" (" + info->filePath().fileName() + ')');
|
extraInfo.append(" (" + info->filePath().fileName() + ')');
|
||||||
}
|
}
|
||||||
|
|
||||||
LocatorFilterEntry filterEntry(this, name + info->symbolType(), {}, info->icon());
|
LocatorFilterEntry filterEntry(this, name + info->symbolType());
|
||||||
|
filterEntry.displayIcon = info->icon();
|
||||||
filterEntry.linkForEditor = {info->filePath(), info->line(), info->column()};
|
filterEntry.linkForEditor = {info->filePath(), info->line(), info->column()};
|
||||||
filterEntry.extraInfo = extraInfo;
|
filterEntry.extraInfo = extraInfo;
|
||||||
|
|
||||||
|
|||||||
@@ -78,7 +78,8 @@ QList<LocatorFilterEntry> HelpIndexFilter::matchesFor(QFutureInterface<LocatorFi
|
|||||||
QList<LocatorFilterEntry> entries;
|
QList<LocatorFilterEntry> entries;
|
||||||
for (const QString &keyword : std::as_const(m_lastIndicesCache)) {
|
for (const QString &keyword : std::as_const(m_lastIndicesCache)) {
|
||||||
const int index = keyword.indexOf(entry, 0, cs);
|
const int index = keyword.indexOf(entry, 0, cs);
|
||||||
LocatorFilterEntry filterEntry(this, keyword, {}, m_icon);
|
LocatorFilterEntry filterEntry(this, keyword);
|
||||||
|
filterEntry.displayIcon = m_icon;
|
||||||
filterEntry.highlightInfo = {index, int(entry.length())};
|
filterEntry.highlightInfo = {index, int(entry.length())};
|
||||||
entries.append(filterEntry);
|
entries.append(filterEntry);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -50,7 +50,8 @@ QList<Core::LocatorFilterEntry> MacroLocatorFilter::matchesFor(QFutureInterface<
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (index >= 0) {
|
if (index >= 0) {
|
||||||
Core::LocatorFilterEntry filterEntry(this, displayName, {}, m_icon);
|
Core::LocatorFilterEntry filterEntry(this, displayName);
|
||||||
|
filterEntry.displayIcon = m_icon;
|
||||||
filterEntry.extraInfo = description;
|
filterEntry.extraInfo = description;
|
||||||
filterEntry.highlightInfo = Core::LocatorFilterEntry::HighlightInfo(index, entry.length(), hDataType);
|
filterEntry.highlightInfo = Core::LocatorFilterEntry::HighlightInfo(index, entry.length(), hDataType);
|
||||||
|
|
||||||
|
|||||||
@@ -64,7 +64,9 @@ QList<LocatorFilterEntry> LineNumberFilter::matchesFor(QFutureInterface<LocatorF
|
|||||||
text = Tr::tr("Line %1").arg(line);
|
text = Tr::tr("Line %1").arg(line);
|
||||||
else
|
else
|
||||||
text = Tr::tr("Column %1").arg(column);
|
text = Tr::tr("Column %1").arg(column);
|
||||||
value.append(LocatorFilterEntry(this, text, QVariant::fromValue(data)));
|
LocatorFilterEntry entry(this, text);
|
||||||
|
entry.internalData = QVariant::fromValue(data);
|
||||||
|
value.append(entry);
|
||||||
}
|
}
|
||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user