diff --git a/src/plugins/coreplugin/dialogs/settingsdialog.cpp b/src/plugins/coreplugin/dialogs/settingsdialog.cpp index e5c6a1825f3..9a05e191bc5 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 f942b03c523..9e09496be9a 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 m_pages;