diff options
author | Eike Ziller <eike.ziller@qt.io> | 2017-02-13 12:27:57 +0100 |
---|---|---|
committer | Eike Ziller <eike.ziller@qt.io> | 2017-02-16 11:08:03 +0000 |
commit | 8ed4685b9903a97df9175e89584727981d1743eb (patch) | |
tree | 6b4397c96cd6d13b6679fdd5059cbac1c9b4dce3 | |
parent | cc97609e60be4d4afeb28d7d4cacce9b4ea3478f (diff) | |
download | qt-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.cpp | 12 |
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); + } } } |