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