forked from qt-creator/qt-creator
Make context help work also when switching user interface language.
Also avoids errors because of users messing with the "Unfiltered" filter, which is used for e.g. context help. The strategy now is to remove the "Unfiltered" filter from previous runs (possibly in a different language), and re-register a fresh filter with the name in the current language, and guaranteed to not filter out anything. Reviewed-by: kh1
This commit is contained in:
@@ -572,7 +572,6 @@ void HelpPlugin::extensionsInitialized()
|
||||
return;
|
||||
}
|
||||
|
||||
bool needsSetup = false;
|
||||
bool assistantInternalDocRegistered = false;
|
||||
QStringList documentationToRemove;
|
||||
QStringList filtersToRemove;
|
||||
@@ -601,12 +600,10 @@ void HelpPlugin::extensionsInitialized()
|
||||
QHelpEngineCore hc(m_helpEngine->collectionFile());
|
||||
hc.setupData();
|
||||
foreach (const QString &ns, documentationToRemove) {
|
||||
if (hc.unregisterDocumentation(ns))
|
||||
needsSetup = true;
|
||||
hc.unregisterDocumentation(ns);
|
||||
}
|
||||
foreach (const QString &filter, filtersToRemove) {
|
||||
if (hc.removeCustomFilter(filter))
|
||||
needsSetup = true;
|
||||
hc.removeCustomFilter(filter);
|
||||
}
|
||||
|
||||
if (!assistantInternalDocRegistered) {
|
||||
@@ -619,27 +616,37 @@ void HelpPlugin::extensionsInitialized()
|
||||
#endif
|
||||
if (!hc.registerDocumentation(qchFileName))
|
||||
qDebug() << qPrintable(hc.error());
|
||||
needsSetup = true;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
QLatin1String key("UnfilteredFilterInserted");
|
||||
int i = m_helpEngine->customValue(key).toInt();
|
||||
if (i != 1) {
|
||||
const QLatin1String weAddedFilterKey("UnfilteredFilterInserted");
|
||||
const QLatin1String previousFilterNameKey("UnfilteredFilterName");
|
||||
int i = m_helpEngine->customValue(weAddedFilterKey).toInt();
|
||||
const QString filterName = tr("Unfiltered");
|
||||
if (i == 1) { // we added a filter at some point
|
||||
// remove previously added filter
|
||||
QHelpEngineCore hc(m_helpEngine->collectionFile());
|
||||
hc.setupData();
|
||||
QString previousFilterName = hc.customValue(previousFilterNameKey).toString();
|
||||
if (!previousFilterName.isEmpty()) { // we noted down the name of the previously added filter
|
||||
hc.removeCustomFilter(previousFilterName);
|
||||
}
|
||||
if (previousFilterName != filterName) { // potentially remove a filter with new name
|
||||
hc.removeCustomFilter(filterName);
|
||||
}
|
||||
}
|
||||
{
|
||||
QHelpEngineCore hc(m_helpEngine->collectionFile());
|
||||
hc.setupData();
|
||||
hc.addCustomFilter(tr("Unfiltered"), QStringList());
|
||||
hc.setCustomValue(key, 1);
|
||||
hc.addCustomFilter(filterName, QStringList());
|
||||
hc.setCustomValue(weAddedFilterKey, 1);
|
||||
hc.setCustomValue(previousFilterNameKey, filterName);
|
||||
}
|
||||
bool blocked = m_helpEngine->blockSignals(true);
|
||||
m_helpEngine->setCurrentFilter(tr("Unfiltered"));
|
||||
m_helpEngine->setCurrentFilter(filterName);
|
||||
m_helpEngine->blockSignals(blocked);
|
||||
needsSetup = true;
|
||||
}
|
||||
|
||||
if (needsSetup)
|
||||
m_helpEngine->setupData();
|
||||
|
||||
updateFilterComboBox();
|
||||
|
Reference in New Issue
Block a user