diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/debuggerconsole/DebuggerConsoleManager.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/debuggerconsole/DebuggerConsoleManager.java index ad90f994f86..433027eb500 100644 --- a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/debuggerconsole/DebuggerConsoleManager.java +++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/debuggerconsole/DebuggerConsoleManager.java @@ -41,6 +41,7 @@ public class DebuggerConsoleManager implements IDebuggerConsoleManager { /** A list of listeners registered for notifications of changes to consoles */ private ListenerList fConsoleListeners = new ListenerList<>(); + private OpenDebuggerConsoleViewJob fOpenDebuggerConsoleViewJob = new OpenDebuggerConsoleViewJob(); private ShowDebuggerConsoleViewJob fShowDebuggerConsoleViewJob = new ShowDebuggerConsoleViewJob(); @Override @@ -85,6 +86,11 @@ public class DebuggerConsoleManager implements IDebuggerConsoleManager { fShowDebuggerConsoleViewJob.schedule(100); } + @Override + public void openConsoleView() { + fOpenDebuggerConsoleViewJob.schedule(100); + } + private class ShowDebuggerConsoleViewJob extends WorkbenchJob { ShowDebuggerConsoleViewJob() { super("Show GDB Console View"); //$NON-NLS-1$ @@ -125,4 +131,33 @@ public class DebuggerConsoleManager implements IDebuggerConsoleManager { return Status.OK_STATUS; } } + + private class OpenDebuggerConsoleViewJob extends WorkbenchJob { + OpenDebuggerConsoleViewJob() { + super("Open GDB Console View"); //$NON-NLS-1$ + setSystem(true); + setPriority(Job.SHORT); + } + + @Override + public IStatus runInUIThread(IProgressMonitor monitor) { + IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow(); + if (window != null) { + IWorkbenchPage page = window.getActivePage(); + if (page != null) { + IViewPart view = page.findView(DebuggerConsoleView.DEBUGGER_CONSOLE_VIEW_ID); + if (view == null) { + try { + page.showView(DebuggerConsoleView.DEBUGGER_CONSOLE_VIEW_ID, + null, + IWorkbenchPage.VIEW_CREATE); + } catch (PartInitException e) { + CDebugUIPlugin.log(e); + } + } + } + } + return Status.OK_STATUS; + } + } } diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/debuggerconsole/IDebuggerConsoleManager.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/debuggerconsole/IDebuggerConsoleManager.java index 870a25a8d6e..8b8dd017eb5 100644 --- a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/debuggerconsole/IDebuggerConsoleManager.java +++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/debuggerconsole/IDebuggerConsoleManager.java @@ -52,8 +52,14 @@ public interface IDebuggerConsoleManager { public IDebuggerConsole[] getConsoles(); /** - * Opens the console view. - * If the view is already open, it is brought to the front. + * Shows the console view, by opening it if necessary. + * Once open, or if the view was already open, it is brought to the front. */ public void showConsoleView(); + + /** + * Opens the console view but does not bring it to the front. + * Does nothing if the view is already open. + */ + public void openConsoleView(); } diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/console/GdbCliConsoleManager.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/console/GdbCliConsoleManager.java index 15870f79389..d4874699941 100644 --- a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/console/GdbCliConsoleManager.java +++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/console/GdbCliConsoleManager.java @@ -198,8 +198,8 @@ public class GdbCliConsoleManager implements ILaunchesListener2 { } addConsole(console); - // Make sure the Debugger Console view is visible - getDebuggerConsoleManager().showConsoleView(); + // Make sure the Debugger Console view is visible but do not force it to the top + getDebuggerConsoleManager().openConsoleView(); } }