diff --git a/bundles/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/internal/LaunchBarManager.java b/bundles/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/internal/LaunchBarManager.java index 5f5e48d08f1..277888a0a40 100644 --- a/bundles/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/internal/LaunchBarManager.java +++ b/bundles/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/internal/LaunchBarManager.java @@ -474,7 +474,6 @@ public class LaunchBarManager implements ILaunchBarManager, ILaunchTargetListene setActiveLaunchTarget(null); return; } - // last stored target from persistent storage String activeTargetId = getPerDescriptorStore().get(PREF_ACTIVE_LAUNCH_TARGET, null); if (activeTargetId != null) { @@ -484,6 +483,12 @@ public class LaunchBarManager implements ILaunchBarManager, ILaunchTargetListene setActiveLaunchTarget(storedTarget); return; } + } else { + // current active target, check if it is supported + if (activeLaunchTarget != null && supportsTarget(activeLaunchDesc, activeLaunchTarget)) { + setActiveLaunchTarget(activeLaunchTarget); + return; + } } // default target for descriptor setActiveLaunchTarget(getDefaultLaunchTarget(activeLaunchDesc)); @@ -721,7 +726,8 @@ public class LaunchBarManager implements ILaunchBarManager, ILaunchTargetListene private ILaunchTarget getDefaultLaunchTarget(ILaunchDescriptor descriptor) { List targets = getLaunchTargets(descriptor); - return targets.isEmpty() ? ILaunchTarget.NULL_TARGET : targets.get(0); + // chances are that better target is most recently added, rather then the oldest + return targets.isEmpty() ? ILaunchTarget.NULL_TARGET : targets.get(targets.size()-1); } public ILaunchConfiguration getActiveLaunchConfiguration() throws CoreException {