Community
Participate
Working Groups
Created attachment 203979 [details] Suggested implementation 1. Select C++ on the includes tab 2. Switch to "Symbols" tab. Note that selected language is now C (or any other language that is first) 3. Switch back to "Includes" tab and note that selected language is now "Assembly" I suggest changing this behavior so: 1. Both pages remember selected language. 2. They use the same language when user switches between them (so the user can configure "Includes" for C++ and then switch to "Symbols" to configure symbols for the same language). Suggested implementation will also retain language selection between property dialog invocations.
The patch looks good except that the name of local variable "firstItem" stops making sense. Could you rename it appropriately? Well, if I started picking on names, also, I'd rather see a bit more descriptive name like "selectedLanguageId" or "currentLanguageId" for the new field (instead of "languageId").
Created attachment 204044 [details] Update patch Please find attached updated patch.
I had already committed the patch on master but then encountered NPE while doing monkey testing for 8.0.X. Create Executable XL C/C++ project and try to select Paths and Symbols in its properties. Please, submit separate patch to fix this issue. java.lang.NullPointerException at org.eclipse.cdt.ui.newui.AbstractLangsListTab.updateData(AbstractLangsListTab.java:396) at org.eclipse.cdt.ui.newui.AbstractLangsListTab.createControls(AbstractLangsListTab.java:226) at org.eclipse.cdt.ui.newui.IncludeTab.createControls(IncludeTab.java:86) at org.eclipse.cdt.ui.newui.AbstractCPropertyTab.createControls(AbstractCPropertyTab.java:135) at org.eclipse.cdt.ui.newui.AbstractPage.loadTab(AbstractPage.java:1105) at org.eclipse.cdt.ui.newui.AbstractPage.loadExtensionsSynchronized(AbstractPage.java:1052) at org.eclipse.cdt.ui.newui.AbstractPage.createWidgets(AbstractPage.java:360) at org.eclipse.cdt.ui.newui.AbstractPage.contentForCDT(AbstractPage.java:346) at org.eclipse.cdt.ui.newui.AbstractPage.createContents(AbstractPage.java:244) at org.eclipse.jface.preference.PreferencePage.createControl(PreferencePage.java:232) at org.eclipse.jface.preference.PreferenceDialog.createPageControl(PreferenceDialog.java:1501) at org.eclipse.jface.preference.PreferenceDialog$14.run(PreferenceDialog.java:1258) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:49) at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:175) at org.eclipse.jface.preference.PreferenceDialog.showPage(PreferenceDialog.java:1252) at org.eclipse.ui.internal.dialogs.FilteredPreferenceDialog.showPage(FilteredPreferenceDialog.java:674) at org.eclipse.jface.preference.PreferenceDialog$10.run(PreferenceDialog.java:708) at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70) at org.eclipse.jface.preference.PreferenceDialog$9.selectionChanged(PreferenceDialog.java:704) at org.eclipse.jface.viewers.StructuredViewer$3.run(StructuredViewer.java:888) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:49) at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:175) at org.eclipse.jface.viewers.StructuredViewer.firePostSelectionChanged(StructuredViewer.java:886) at org.eclipse.jface.viewers.StructuredViewer.handlePostSelect(StructuredViewer.java:1226) at org.eclipse.jface.viewers.StructuredViewer$5.widgetSelected(StructuredViewer.java:1251) at org.eclipse.jface.util.OpenStrategy.firePostSelectionEvent(OpenStrategy.java:262) at org.eclipse.jface.util.OpenStrategy.access$5(OpenStrategy.java:256) at org.eclipse.jface.util.OpenStrategy$3.run(OpenStrategy.java:433) at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35) at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:135) at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:4140) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3757) at org.eclipse.jface.window.Window.runEventLoop(Window.java:825) at org.eclipse.jface.window.Window.open(Window.java:801) at org.eclipse.ui.dialogs.PropertyDialogAction.run(PropertyDialogAction.java:158) at org.eclipse.jface.action.Action.runWithEvent(Action.java:498) at org.eclipse.jface.commands.ActionHandler.execute(ActionHandler.java:119) at org.eclipse.core.commands.Command.executeWithChecks(Command.java:476) at org.eclipse.core.commands.ParameterizedCommand.executeWithChecks(ParameterizedCommand.java:508) at org.eclipse.ui.internal.handlers.HandlerService.executeCommand(HandlerService.java:169) at org.eclipse.ui.internal.keys.WorkbenchKeyboard.executeCommand(WorkbenchKeyboard.java:468) at org.eclipse.ui.internal.keys.WorkbenchKeyboard.press(WorkbenchKeyboard.java:786) at org.eclipse.ui.internal.keys.WorkbenchKeyboard.processKeyEvent(WorkbenchKeyboard.java:885) at org.eclipse.ui.internal.keys.WorkbenchKeyboard.filterKeySequenceBindings(WorkbenchKeyboard.java:567) at org.eclipse.ui.internal.keys.WorkbenchKeyboard.access$3(WorkbenchKeyboard.java:508) at org.eclipse.ui.internal.keys.WorkbenchKeyboard$KeyDownFilter.handleEvent(WorkbenchKeyboard.java:123) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84) at org.eclipse.swt.widgets.Display.filterEvent(Display.java:1262) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1052) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1077) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1062) at org.eclipse.swt.widgets.Widget.sendKeyEvent(Widget.java:1104) at org.eclipse.swt.widgets.Widget.sendKeyEvent(Widget.java:1100) at org.eclipse.swt.widgets.Widget.wmSysChar(Widget.java:2434) at org.eclipse.swt.widgets.Control.WM_SYSCHAR(Control.java:5179) at org.eclipse.swt.widgets.Control.windowProc(Control.java:4604) at org.eclipse.swt.widgets.Tree.windowProc(Tree.java:5937) at org.eclipse.swt.widgets.Display.windowProc(Display.java:4972) at org.eclipse.swt.internal.win32.OS.DispatchMessageW(Native Method) at org.eclipse.swt.internal.win32.OS.DispatchMessage(OS.java:2531) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3752) at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2696) at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2660) at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2494) at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:674) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:667) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149) at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:123) at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:344) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:622) at org.eclipse.equinox.launcher.Main.basicRun(Main.java:577) at org.eclipse.equinox.launcher.Main.run(Main.java:1410) at org.eclipse.equinox.launcher.Main.main(Main.java:1386)
*** cdt git genie on behalf of Eugene Ostroukhov *** bug 358832: Includes and Symbols tabs do not remember selected language [*] http://git.eclipse.org/c/cdt/org.eclipse.cdt.git/commit/?id=8bfbc64c7e4c6503a219aadd67821328a1cba9d5
*** cdt git genie on behalf of Eugene Ostroukhov *** bug 358832: Includes and Symbols tabs do not remember selected language [*] http://git.eclipse.org/c/cdt/org.eclipse.cdt.git/commit/?id=af1c5a901fe350bb27baf0282e40be6f2aa882b8
(In reply to comment #3) > java.lang.NullPointerException The problem corrected with bug 359176.
Verified in 8.0.2 RC1. BTW, maybe the value of "Show built-in values" should be remembered as well? Opinions?