Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
View | Details | Raw Unified | Return to bug 231283
Collapse All | Expand All

(-)src/org/eclipse/jface/internal/text/html/BrowserInformationControl.java (-15 / +37 lines)
Lines 16-28 Link Here
16
16
17
import org.eclipse.core.runtime.Assert;
17
import org.eclipse.core.runtime.Assert;
18
import org.eclipse.core.runtime.ListenerList;
18
import org.eclipse.core.runtime.ListenerList;
19
import org.eclipse.jface.action.ToolBarManager;
19
20
import org.eclipse.jface.resource.JFaceResources;
21
import org.eclipse.jface.text.AbstractInformationControl;
22
import org.eclipse.jface.text.IDelayedInputChangeProvider;
23
import org.eclipse.jface.text.IInformationControlExtension2;
24
import org.eclipse.jface.text.IInputChangedListener;
25
import org.eclipse.jface.text.TextPresentation;
26
import org.eclipse.swt.SWT;
20
import org.eclipse.swt.SWT;
27
import org.eclipse.swt.SWTError;
21
import org.eclipse.swt.SWTError;
28
import org.eclipse.swt.browser.Browser;
22
import org.eclipse.swt.browser.Browser;
Lines 30-37 Link Here
30
import org.eclipse.swt.browser.ProgressAdapter;
24
import org.eclipse.swt.browser.ProgressAdapter;
31
import org.eclipse.swt.browser.ProgressEvent;
25
import org.eclipse.swt.browser.ProgressEvent;
32
import org.eclipse.swt.custom.StyleRange;
26
import org.eclipse.swt.custom.StyleRange;
33
import org.eclipse.swt.events.KeyEvent;
27
import org.eclipse.swt.events.DisposeEvent;
34
import org.eclipse.swt.events.KeyListener;
28
import org.eclipse.swt.events.DisposeListener;
29
import org.eclipse.swt.events.ShellAdapter;
30
import org.eclipse.swt.events.ShellEvent;
35
import org.eclipse.swt.graphics.Color;
31
import org.eclipse.swt.graphics.Color;
36
import org.eclipse.swt.graphics.Font;
32
import org.eclipse.swt.graphics.Font;
37
import org.eclipse.swt.graphics.FontData;
33
import org.eclipse.swt.graphics.FontData;
Lines 42-51 Link Here
42
import org.eclipse.swt.graphics.TextStyle;
38
import org.eclipse.swt.graphics.TextStyle;
43
import org.eclipse.swt.widgets.Composite;
39
import org.eclipse.swt.widgets.Composite;
44
import org.eclipse.swt.widgets.Display;
40
import org.eclipse.swt.widgets.Display;
41
import org.eclipse.swt.widgets.Event;
42
import org.eclipse.swt.widgets.Listener;
45
import org.eclipse.swt.widgets.Menu;
43
import org.eclipse.swt.widgets.Menu;
46
import org.eclipse.swt.widgets.Shell;
44
import org.eclipse.swt.widgets.Shell;
47
import org.eclipse.swt.widgets.Slider;
45
import org.eclipse.swt.widgets.Slider;
48
46
47
import org.eclipse.jface.action.ToolBarManager;
48
import org.eclipse.jface.resource.JFaceResources;
49
import org.eclipse.jface.text.AbstractInformationControl;
50
import org.eclipse.jface.text.IDelayedInputChangeProvider;
51
import org.eclipse.jface.text.IInformationControlExtension2;
52
import org.eclipse.jface.text.IInputChangedListener;
53
import org.eclipse.jface.text.TextPresentation;
54
49
55
50
/**
56
/**
51
 * Displays HTML information in a {@link org.eclipse.swt.browser.Browser} widget.
57
 * Displays HTML information in a {@link org.eclipse.swt.browser.Browser} widget.
Lines 211-225 Link Here
211
		Display display= getShell().getDisplay();
217
		Display display= getShell().getDisplay();
212
		fBrowser.setForeground(display.getSystemColor(SWT.COLOR_INFO_FOREGROUND));
218
		fBrowser.setForeground(display.getSystemColor(SWT.COLOR_INFO_FOREGROUND));
213
		fBrowser.setBackground(display.getSystemColor(SWT.COLOR_INFO_BACKGROUND));
219
		fBrowser.setBackground(display.getSystemColor(SWT.COLOR_INFO_BACKGROUND));
214
		fBrowser.addKeyListener(new KeyListener() {
220
		
215
221
		//START workaround for bugs 231283, 231311, 231303
216
			public void keyPressed(KeyEvent e)  {
222
		final Listener escapeListener= new Listener() {
223
			public void handleEvent(Event e) {
217
				if (e.character == 0x1B) // ESC
224
				if (e.character == 0x1B) // ESC
218
					getShell().dispose(); // XXX: Just hide? Would avoid constant recreations.
225
					if (! fBrowser.isDisposed() && fBrowser.isFocusControl())
226
						getShell().dispose(); // XXX: Just hide? Would avoid constant recreations.
227
			}
228
		};
229
		fBrowser.addDisposeListener(new DisposeListener() {
230
			public void widgetDisposed(DisposeEvent e) {
231
				e.display.removeFilter(SWT.KeyDown, escapeListener);
232
			}
233
		});
234
		getShell().addShellListener(new ShellAdapter() {
235
			public void shellActivated(ShellEvent e) {
236
				e.display.addFilter(SWT.KeyDown, escapeListener);
237
			}
238
			public void shellDeactivated(ShellEvent e) {
239
				e.display.removeFilter(SWT.KeyDown, escapeListener);
219
			}
240
			}
220
221
			public void keyReleased(KeyEvent e) {}
222
		});
241
		});
242
		if (isFocusControl())
243
			display.addFilter(SWT.KeyDown, escapeListener);
244
		//END workaround
223
245
224
        fBrowser.addProgressListener(new ProgressAdapter() {
246
        fBrowser.addProgressListener(new ProgressAdapter() {
225
            public void completed(ProgressEvent event) {
247
            public void completed(ProgressEvent event) {

Return to bug 231283