diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/executables/ExecutablesViewer.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/executables/ExecutablesViewer.java index 1d6300d34b5..cc44147ebe6 100644 --- a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/executables/ExecutablesViewer.java +++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/executables/ExecutablesViewer.java @@ -21,6 +21,7 @@ import org.eclipse.jface.action.IMenuListener; import org.eclipse.jface.action.IMenuManager; import org.eclipse.jface.action.MenuManager; import org.eclipse.jface.action.Separator; +import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.viewers.Viewer; import org.eclipse.jface.viewers.ViewerComparator; import org.eclipse.jface.viewers.ViewerDropAdapter; @@ -177,6 +178,19 @@ public class ExecutablesViewer extends BaseViewer implements IExecutablesChangeL @Override public IStatus runInUIThread(IProgressMonitor monitor) { + // if the user has selected an executable, they expect its + // list of source files to be refreshed automatically + if (viewer.getSelection() != null && + viewer.getSelection() instanceof IStructuredSelection) { + IStructuredSelection selection = (IStructuredSelection) viewer.getSelection(); + + Object firstElement = selection.getFirstElement(); + if (firstElement instanceof Executable) { + Executable executable = (Executable)firstElement; + executable.setRefreshSourceFiles(true); + viewer.setSelection(selection); + } + } viewer.refresh(null); viewer.packColumns(); return Status.OK_STATUS;