diff --git a/src/plugins/coreplugin/dialogs/settingsdialog.cpp b/src/plugins/coreplugin/dialogs/settingsdialog.cpp index e5c6a1825f37228fe324e601b734186b4ed8cfff..9a05e191bc5c926d1365bdd1dba74d4d347abd69 100644 --- a/src/plugins/coreplugin/dialogs/settingsdialog.cpp +++ b/src/plugins/coreplugin/dialogs/settingsdialog.cpp @@ -436,6 +436,12 @@ void SettingsDialog::ensureCategoryWidget(Category *category) category->index = m_stackedLayout->addWidget(tabWidget); } +void SettingsDialog::ensureAllCategoryWidgets() +{ + foreach (Category *category, m_model->categories()) + ensureCategoryWidget(category); +} + void SettingsDialog::updateEnabledTabs(Category *category, const QString &searchText) { for (int i = 0; i < category->pages.size(); ++i) { @@ -472,6 +478,7 @@ void SettingsDialog::currentTabChanged(int index) void SettingsDialog::filter(const QString &text) { + ensureAllCategoryWidgets(); // When there is no current index, select the first one when possible if (!m_categoryList->currentIndex().isValid() && m_model->rowCount() > 0) m_categoryList->setCurrentIndex(m_proxyModel->index(0, 0)); diff --git a/src/plugins/coreplugin/dialogs/settingsdialog.h b/src/plugins/coreplugin/dialogs/settingsdialog.h index f942b03c523c098cf692872dcab16eaf10d80b65..9e09496be9a2fa45c32f9212160d8957de2945c5 100644 --- a/src/plugins/coreplugin/dialogs/settingsdialog.h +++ b/src/plugins/coreplugin/dialogs/settingsdialog.h @@ -94,6 +94,7 @@ private: void showPage(const QString &categoryId, const QString &pageId); void updateEnabledTabs(Category *category, const QString &searchText); void ensureCategoryWidget(Category *category); + void ensureAllCategoryWidgets(); const QList<Core::IOptionsPage*> m_pages;