summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEike Ziller <eike.ziller@qt.io>2017-02-13 12:27:57 +0100
committerEike Ziller <eike.ziller@qt.io>2017-02-16 11:08:03 +0000
commit8ed4685b9903a97df9175e89584727981d1743eb (patch)
tree6b4397c96cd6d13b6679fdd5059cbac1c9b4dce3
parentcc97609e60be4d4afeb28d7d4cacce9b4ea3478f (diff)
downloadqt-creator-8ed4685b9903a97df9175e89584727981d1743eb.tar.gz
Settings: Do not crash when jumping to filtered out category
Task-number: QTCREATORBUG-17677 Change-Id: I95633a905d71b981e0bb72ce4af2a2fed605f39d Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
-rw-r--r--src/plugins/coreplugin/dialogs/settingsdialog.cpp12
1 files changed, 9 insertions, 3 deletions
diff --git a/src/plugins/coreplugin/dialogs/settingsdialog.cpp b/src/plugins/coreplugin/dialogs/settingsdialog.cpp
index 05912c0087..2322a2486d 100644
--- a/src/plugins/coreplugin/dialogs/settingsdialog.cpp
+++ b/src/plugins/coreplugin/dialogs/settingsdialog.cpp
@@ -480,10 +480,16 @@ void SettingsDialog::showPage(const Id pageId)
return; // Unknown settings page, probably due to missing plugin.
if (initialCategoryIndex != -1) {
- const QModelIndex modelIndex = m_proxyModel->mapFromSource(m_model->index(initialCategoryIndex));
+ QModelIndex modelIndex = m_proxyModel->mapFromSource(m_model->index(initialCategoryIndex));
+ if (!modelIndex.isValid()) { // filtered out, so clear filter first
+ m_filterLineEdit->setText(QString());
+ modelIndex = m_proxyModel->mapFromSource(m_model->index(initialCategoryIndex));
+ }
m_categoryList->setCurrentIndex(modelIndex);
- if (initialPageIndex != -1)
- categories.at(initialCategoryIndex)->tabWidget->setCurrentIndex(initialPageIndex);
+ if (initialPageIndex != -1) {
+ if (QTC_GUARD(categories.at(initialCategoryIndex)->tabWidget))
+ categories.at(initialCategoryIndex)->tabWidget->setCurrentIndex(initialPageIndex);
+ }
}
}