From 034cac2c534b426f1018932b824bbe818b878797 Mon Sep 17 00:00:00 2001 From: Andrey Loskutov Date: Mon, 27 Jan 2020 17:16:43 +0100 Subject: Bug 559590 - "Custom" debug view is not considered in SourceLookupService.debugContextChanged Check if the view part provided by the DebugContextProvider is shown, if the DebugContextProvider for given DebugContextEvent specifies its own part. This part is not necessarily the default Debug view. If this is the case, we also want to proceed with displaySource(). Change-Id: I1b86b3d2224c8532ddf23b4d423f211267ff3106 Signed-off-by: Andrey Loskutov --- .../internal/ui/sourcelookup/SourceLookupService.java | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) (limited to 'org.eclipse.debug.ui') diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/sourcelookup/SourceLookupService.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/sourcelookup/SourceLookupService.java index a19871086..222ddcb1d 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/sourcelookup/SourceLookupService.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/sourcelookup/SourceLookupService.java @@ -29,6 +29,7 @@ import org.eclipse.jface.dialogs.MessageDialogWithToggle; import org.eclipse.jface.preference.IPreferenceStore; import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.ui.IViewPart; import org.eclipse.ui.IWorkbenchPage; import org.eclipse.ui.IWorkbenchPart; import org.eclipse.ui.IWorkbenchWindow; @@ -57,19 +58,27 @@ public class SourceLookupService implements IDebugContextListener, ISourceDispla @Override public synchronized void debugContextChanged(DebugContextEvent event) { if ((event.getFlags() & DebugContextEvent.ACTIVATED) > 0) { - if (isDebugViewActive() || canActivateDebugView()) { + if (isDebugViewActive(event) || canActivateDebugView()) { displaySource(event.getContext(), event.getDebugContextProvider().getPart(), false); } } } - private boolean isDebugViewActive() { + private boolean isDebugViewActive(DebugContextEvent event) { if (isDisposed()) { return false; } IWorkbenchPage activePage = fWindow.getActivePage(); if (activePage != null) { - return activePage.findView(IDebugUIConstants.ID_DEBUG_VIEW) != null; + IViewPart debugView = null; + IWorkbenchPart part = event.getDebugContextProvider().getPart(); + if (part != null) { + debugView = activePage.findView(part.getSite().getId()); + } + if (debugView == null) { + debugView = activePage.findView(IDebugUIConstants.ID_DEBUG_VIEW); + } + return debugView != null; } return false; } -- cgit v1.2.3