diff options
author | Michael Rennie | 2006-12-07 21:44:53 +0000 |
---|---|---|
committer | Michael Rennie | 2006-12-07 21:44:53 +0000 |
commit | bee474c9e62aba6c6d7ecd21babae7e06475fb2a (patch) | |
tree | a62b4d1aee5fa771718b263d30812e5b42208f60 /org.eclipse.debug.ui | |
parent | e76d134e8fd5fe74919c4198dd3198f430536b14 (diff) | |
download | eclipse.platform.debug-bee474c9e62aba6c6d7ecd21babae7e06475fb2a.tar.gz eclipse.platform.debug-bee474c9e62aba6c6d7ecd21babae7e06475fb2a.tar.xz eclipse.platform.debug-bee474c9e62aba6c6d7ecd21babae7e06475fb2a.zip |
Bug 160745
Dangerous use of getActiveShell in Debug
Diffstat (limited to 'org.eclipse.debug.ui')
4 files changed, 17 insertions, 11 deletions
diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/DebugUIPlugin.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/DebugUIPlugin.java index 3e55396f8..1669da39b 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/DebugUIPlugin.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/DebugUIPlugin.java @@ -287,8 +287,15 @@ public class DebugUIPlugin extends AbstractUIPlugin implements ILaunchListener { * @return the currently active workbench window shell or <code>null</code> */ public static Shell getShell() { - if (getActiveWorkbenchWindow() != null) { - return getActiveWorkbenchWindow().getShell(); + IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow(); + if (window == null) { + IWorkbenchWindow[] windows = PlatformUI.getWorkbench().getWorkbenchWindows(); + if (windows.length > 0) { + return windows[0].getShell(); + } + } + else { + return window.getShell(); } return null; } @@ -604,6 +611,7 @@ public class DebugUIPlugin extends AbstractUIPlugin implements ILaunchListener { * Returns the standard display to be used. The method first checks, if * the thread calling this method has an associated display. If so, this * display is returned. Otherwise the method returns the default display. + * */ public static Display getStandardDisplay() { Display display= Display.getCurrent(); diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/stringsubstitution/PromptingResolver.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/stringsubstitution/PromptingResolver.java index 27b26a610..d1c3bb4cd 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/stringsubstitution/PromptingResolver.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/stringsubstitution/PromptingResolver.java @@ -109,11 +109,7 @@ abstract class PromptingResolver implements IDynamicVariableResolver { } protected Shell getShell() { - Shell shell = DebugUIPlugin.getStandardDisplay().getActiveShell(); - if (shell == null) { - shell = DebugUIPlugin.getShell(); - } - return shell; + return DebugUIPlugin.getShell(); } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/memory/renderings/PrintTableRenderingAction.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/memory/renderings/PrintTableRenderingAction.java index 070c95159..151ce871a 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/memory/renderings/PrintTableRenderingAction.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/memory/renderings/PrintTableRenderingAction.java @@ -16,6 +16,7 @@ import org.eclipse.debug.core.model.IMemoryBlock; import org.eclipse.debug.core.model.IMemoryBlockExtension; import org.eclipse.debug.internal.ui.DebugPluginImages; import org.eclipse.debug.internal.ui.DebugUIMessages; +import org.eclipse.debug.internal.ui.DebugUIPlugin; import org.eclipse.debug.internal.ui.IInternalDebugUIConstants; import org.eclipse.jface.action.Action; import org.eclipse.jface.viewers.ITableLabelProvider; @@ -172,7 +173,7 @@ public class PrintTableRenderingAction extends Action if (!(fViewer.getControl() instanceof Table)) return; - PrintDialog printDialog = new PrintDialog(fViewer.getControl().getDisplay().getActiveShell()); + PrintDialog printDialog = new PrintDialog(DebugUIPlugin.getShell()); PrinterData printerData = printDialog.open(); // pop up a system print dialog if (printerData == null) {setChecked(false); return;} Printer printer = new Printer(printerData); diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/RefreshTab.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/RefreshTab.java index d445e3bea..5dcfe1c5b 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/RefreshTab.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/RefreshTab.java @@ -32,6 +32,7 @@ import org.eclipse.debug.internal.ui.DebugPluginImages; import org.eclipse.debug.internal.ui.DebugUIPlugin; import org.eclipse.debug.internal.ui.IDebugHelpContextIds; import org.eclipse.debug.internal.ui.IInternalDebugUIConstants; +import org.eclipse.debug.internal.ui.launchConfigurations.LaunchConfigurationsDialog; import org.eclipse.debug.internal.ui.stringsubstitution.SelectedResourceManager; import org.eclipse.debug.internal.ui.stringsubstitution.StringSubstitutionMessages; import org.eclipse.jface.window.Window; @@ -199,13 +200,13 @@ public class RefreshTab extends AbstractLaunchConfigurationTab { * Prompts the user to select the resources to refresh. */ private void selectResources() { - IWorkingSetManager workingSetManager= PlatformUI.getWorkbench().getWorkingSetManager(); + IWorkingSetManager workingSetManager = PlatformUI.getWorkbench().getWorkingSetManager(); if (fWorkingSet == null){ fWorkingSet = workingSetManager.createWorkingSet(StringSubstitutionMessages.RefreshTab_40, new IAdaptable[0]); } - IWorkingSetEditWizard wizard= workingSetManager.createWorkingSetEditWizard(fWorkingSet); - WizardDialog dialog = new WizardDialog(DebugUIPlugin.getStandardDisplay().getActiveShell(), wizard); + IWorkingSetEditWizard wizard = workingSetManager.createWorkingSetEditWizard(fWorkingSet); + WizardDialog dialog = new WizardDialog(((LaunchConfigurationsDialog)LaunchConfigurationsDialog.getCurrentlyVisibleLaunchConfigurationDialog()).getShell(), wizard); dialog.create(); if (dialog.open() == Window.CANCEL) { |