Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Rennie2006-12-07 21:44:53 +0000
committerMichael Rennie2006-12-07 21:44:53 +0000
commitbee474c9e62aba6c6d7ecd21babae7e06475fb2a (patch)
treea62b4d1aee5fa771718b263d30812e5b42208f60 /org.eclipse.debug.ui
parente76d134e8fd5fe74919c4198dd3198f430536b14 (diff)
downloadeclipse.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')
-rw-r--r--org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/DebugUIPlugin.java12
-rw-r--r--org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/stringsubstitution/PromptingResolver.java6
-rw-r--r--org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/memory/renderings/PrintTableRenderingAction.java3
-rw-r--r--org.eclipse.debug.ui/ui/org/eclipse/debug/ui/RefreshTab.java7
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) {

Back to the top