# HG changeset patch # User ryall # Date 1244230060 18000 # Node ID 89d3c8eb71dd64440275ece50e49238a721d4963 # Parent fad952f32a046a43e16b527c02a005d9d3f2df35 Only react if the select change is new. Don't refresh the exe list if ImportExecutables doesn't do anything. diff -r fad952f32a04 -r 89d3c8eb71dd cdt/cdt_5_0_x/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/executables/ExecutablesManager.java --- a/cdt/cdt_5_0_x/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/executables/ExecutablesManager.java Fri Jun 05 10:43:19 2009 -0500 +++ b/cdt/cdt_5_0_x/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/executables/ExecutablesManager.java Fri Jun 05 14:27:40 2009 -0500 @@ -261,6 +261,7 @@ */ public void importExecutables(final String[] fileNames, IProgressMonitor monitor) { + boolean handled = false; monitor.beginTask("Import Executables", executableImporters.size()); synchronized (executableImporters) { Collections.sort(executableImporters, new Comparator() { @@ -276,14 +277,15 @@ }}); for (IExecutableImporter importer : executableImporters) { - boolean handled = importer.importExecutables(fileNames, new SubProgressMonitor(monitor, 1)); + handled = importer.importExecutables(fileNames, new SubProgressMonitor(monitor, 1)); if (handled || monitor.isCanceled()) { break; } } } - scheduleRefresh(); + if (handled) + scheduleRefresh(); } /** diff -r fad952f32a04 -r 89d3c8eb71dd cdt/cdt_5_0_x/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/executables/ExecutablesView.java --- a/cdt/cdt_5_0_x/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/executables/ExecutablesView.java Fri Jun 05 10:43:19 2009 -0500 +++ b/cdt/cdt_5_0_x/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/executables/ExecutablesView.java Fri Jun 05 14:27:40 2009 -0500 @@ -225,6 +225,8 @@ private Action configureColumnsAction; private IMemento memento; + + private IStructuredSelection oldSelection; /** * Create contents of the Executables View @@ -272,33 +274,38 @@ ISelection newSelection = event.getSelection(); if (newSelection instanceof IStructuredSelection) { - // update the remove action - removeAction.setEnabled(!newSelection.isEmpty()); - - final Object firstElement = ((IStructuredSelection) newSelection).getFirstElement(); - - Job setectExeJob = new Job(Messages.ExecutablesView_Select_Executable) { + if (oldSelection == null || !oldSelection.equals(newSelection)) + { + // update the remove action + removeAction.setEnabled(!newSelection.isEmpty()); + + final Object firstElement = ((IStructuredSelection) newSelection).getFirstElement(); + + Job setectExeJob = new Job(Messages.ExecutablesView_Select_Executable) { - @Override - protected IStatus run(IProgressMonitor monitor) { - if (firstElement instanceof Executable) { - Executable executable = (Executable)firstElement; - this.setName(Messages.ExecutablesView_Finding_Sources_Job_Name + executable.getName()); - executable.getSourceFiles(monitor); - } - // selection could be empty, so do this no matter what to update the source - // files viewer - UIJob selectExeUIJob = new UIJob(Messages.ExecutablesView_Select_Executable){ - @Override - public IStatus runInUIThread(IProgressMonitor monitor) { - sourceFilesViewer.setInput(firstElement); - sourceFilesViewer.packColumns(); - return Status.OK_STATUS; - }}; - selectExeUIJob.schedule(); - return Status.OK_STATUS; - }}; - setectExeJob.schedule(); + @Override + protected IStatus run(IProgressMonitor monitor) { + if (firstElement instanceof Executable) { + Executable executable = (Executable)firstElement; + this.setName(Messages.ExecutablesView_Finding_Sources_Job_Name + executable.getName()); + executable.getSourceFiles(monitor); + } + // selection could be empty, so do this no matter what to update the source + // files viewer + UIJob selectExeUIJob = new UIJob(Messages.ExecutablesView_Select_Executable){ + @Override + public IStatus runInUIThread(IProgressMonitor monitor) { + sourceFilesViewer.setInput(firstElement); + sourceFilesViewer.packColumns(); + return Status.OK_STATUS; + }}; + selectExeUIJob.schedule(); + return Status.OK_STATUS; + }}; + setectExeJob.schedule(); + oldSelection = (IStructuredSelection) newSelection; + } + } } });