From bada915c35f07533acd2ffad60c7d999f53dafd6 Mon Sep 17 00:00:00 2001 From: con <qtc-committer@nokia.com> Date: Mon, 6 Dec 2010 17:38:42 +0100 Subject: [PATCH] Fix crash when using settings dialog filter. Introduced by 773343f396adb765e3b1837b3d961045e2a10056 Need to ensure widget creation when filtering, because the translated strings from the widgets are used for key words. --- src/plugins/coreplugin/dialogs/settingsdialog.cpp | 7 +++++++ src/plugins/coreplugin/dialogs/settingsdialog.h | 1 + 2 files changed, 8 insertions(+) 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<Core::IOptionsPage*> m_pages; -- GitLab