From 37c2a407da1f70b02bbb8d44fdf768312fdab7f1 Mon Sep 17 00:00:00 2001 From: Ken Ryall Date: Tue, 26 May 2009 18:24:30 +0000 Subject: [PATCH] Bug 277903, don't refresh exe list if import doesn't add and new ones. --- .../core/executables/ExecutablesManager.java | 20 ++++++++++--------- .../StandardExecutableImporter.java | 4 +++- 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/executables/ExecutablesManager.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/executables/ExecutablesManager.java index 63886cd8478..3268ab453e9 100644 --- a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/executables/ExecutablesManager.java +++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/executables/ExecutablesManager.java @@ -45,16 +45,16 @@ import org.eclipse.debug.core.DebugPlugin; */ public class ExecutablesManager extends PlatformObject { - private HashMap executables = new HashMap(); - private List changeListeners = Collections.synchronizedList(new ArrayList()); - private List sourceFileRemappings = Collections.synchronizedList(new ArrayList()); - private List executableProviders = Collections.synchronizedList(new ArrayList()); - private List sourceFileProviders = Collections.synchronizedList(new ArrayList()); - private List executableImporters = Collections.synchronizedList(new ArrayList()); + private final HashMap executables = new HashMap(); + private final List changeListeners = Collections.synchronizedList(new ArrayList()); + private final List sourceFileRemappings = Collections.synchronizedList(new ArrayList()); + private final List executableProviders = Collections.synchronizedList(new ArrayList()); + private final List sourceFileProviders = Collections.synchronizedList(new ArrayList()); + private final List executableImporters = Collections.synchronizedList(new ArrayList()); private boolean refreshNeeded = true; private boolean tempDisableRefresh = false; - private Job refreshJob = new Job("Get Executables") { + private final Job refreshJob = new Job("Get Executables") { @Override public IStatus run(IProgressMonitor monitor) { @@ -204,6 +204,7 @@ public class ExecutablesManager extends PlatformObject { } public void importExecutables(final String[] fileNames, IProgressMonitor monitor) { + boolean handled = false; try { tempDisableRefresh = true; @@ -222,7 +223,7 @@ public class ExecutablesManager extends PlatformObject { }}); 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; } @@ -233,7 +234,8 @@ public class ExecutablesManager extends PlatformObject { tempDisableRefresh = false; } - refreshExecutables(monitor); + if (handled) + refreshExecutables(monitor); monitor.done(); } diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/executables/StandardExecutableImporter.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/executables/StandardExecutableImporter.java index 3492dc6c8ad..063c7da62f2 100644 --- a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/executables/StandardExecutableImporter.java +++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/executables/StandardExecutableImporter.java @@ -63,6 +63,7 @@ public class StandardExecutableImporter implements IExecutableImporter { IProject exeProject = null; boolean checkProject = false; + boolean handled = false; // Weed out existing ones for (String path : fileNames) { @@ -120,6 +121,7 @@ public class StandardExecutableImporter implements IExecutableImporter { } importExecutable(exeProject, path); + handled = true; } monitor.worked(1); if (monitor.isCanceled()) { @@ -127,7 +129,7 @@ public class StandardExecutableImporter implements IExecutableImporter { } } monitor.done(); - return true; + return handled; } public boolean AllowImport(IPath path) {