From 262dd9a8aadf5bc2177afecd4a182cbaee10b1c0 Mon Sep 17 00:00:00 2001 From: Andrew Gvozdev Date: Wed, 5 Dec 2012 17:50:59 -0500 Subject: [PATCH] bug 395304: Selection of language settings provider not always accurate for the current configuration --- .../providers/LanguageSettingsProviderTab.java | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/language/settings/providers/LanguageSettingsProviderTab.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/language/settings/providers/LanguageSettingsProviderTab.java index 56a24f728ce..d858baa05ed 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/language/settings/providers/LanguageSettingsProviderTab.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/language/settings/providers/LanguageSettingsProviderTab.java @@ -1035,6 +1035,7 @@ public class LanguageSettingsProviderTab extends AbstractCPropertyTab { private void updateProvidersTable() { ILanguageSettingsProvider selectedProvider = getSelectedProvider(); String selectedId = selectedProvider != null ? selectedProvider.getId() : null; + boolean wasChecked = selectedProvider != null && tableProvidersViewer.getChecked(selectedProvider); // update viewer if the list of providers changed int pos = tableProviders.getSelectionIndex(); @@ -1049,8 +1050,14 @@ public class LanguageSettingsProviderTab extends AbstractCPropertyTab { if (selectedId != null) { for (int i = 0; i < presentedProviders.size(); i++) { - if (selectedId.equals(presentedProviders.get(i).getId())) { - tableProviders.setSelection(i); + ILanguageSettingsProvider provider = presentedProviders.get(i); + if (selectedId.equals(provider.getId())) { + boolean isChecked = tableProvidersViewer.getChecked(provider); + if (isChecked || isChecked == wasChecked) { + tableProviders.setSelection(i); + } else { + tableProviders.setSelection(0); + } break; } }