View | Details | Raw Unified | Return to bug 42418
Collapse All | Expand All

(-)Workbench.java (-6 / +19 lines)
Lines 344-349 Link Here
344
344
345
	private CommandManager commandManager;
345
	private CommandManager commandManager;
346
	private ContextManager contextManager;
346
	private ContextManager contextManager;
347
	private Boolean keyFilterEnabled;
347
	private StatusLineContributionItem modeContributionItem;
348
	private StatusLineContributionItem modeContributionItem;
348
349
349
	private IWorkbenchWindow activeWorkbenchWindow;
350
	private IWorkbenchWindow activeWorkbenchWindow;
Lines 389-403 Link Here
389
	}
390
	}
390
391
391
	public final void disableKeyFilter() {
392
	public final void disableKeyFilter() {
392
		final Display display = Display.getCurrent();
393
		synchronized (keyFilterEnabled) {
393
		display.removeFilter(SWT.KeyDown, listener);
394
			final Display display = Display.getCurrent();
394
		display.removeFilter(SWT.Traverse, listener);
395
			display.removeFilter(SWT.KeyDown, listener);
396
			display.removeFilter(SWT.Traverse, listener);
397
			keyFilterEnabled = Boolean.TRUE;
398
		}
395
	}
399
	}
396
400
397
	public final void enableKeyFilter() {
401
	public final void enableKeyFilter() {
398
		final Display display = Display.getCurrent();
402
		synchronized (keyFilterEnabled) {
399
		display.addFilter(SWT.KeyDown, listener);
403
			final Display display = Display.getCurrent();
400
		display.addFilter(SWT.Traverse, listener);
404
			display.addFilter(SWT.KeyDown, listener);
405
			display.addFilter(SWT.Traverse, listener);
406
			keyFilterEnabled = Boolean.FALSE;
407
		}
408
	}
409
	
410
	public final boolean isKeyFilterEnabled() {
411
		synchronized (keyFilterEnabled) {
412
			return keyFilterEnabled.booleanValue();
413
		}
401
	}
414
	}
402
415
403
	public final boolean inContext(final String commandId) {
416
	public final boolean inContext(final String commandId) {
(-)WorkbenchWindow.java (+10 lines)
Lines 1583-1588 Link Here
1583
		boolean cancelable,
1583
		boolean cancelable,
1584
		IRunnableWithProgress runnable)
1584
		IRunnableWithProgress runnable)
1585
		throws InvocationTargetException, InterruptedException {
1585
		throws InvocationTargetException, InterruptedException {
1586
		final boolean filterWasEnabled = workbench.isKeyFilterEnabled();
1587
		
1586
		ToolBarManager shortcutBar = getShortcutBar();
1588
		ToolBarManager shortcutBar = getShortcutBar();
1587
		Control shortcutBarControl = null;
1589
		Control shortcutBarControl = null;
1588
		if (shortcutBar != null)
1590
		if (shortcutBar != null)
Lines 1590-1602 Link Here
1590
		boolean shortcutbarWasEnabled = false;
1592
		boolean shortcutbarWasEnabled = false;
1591
		if (shortcutBarControl != null)
1593
		if (shortcutBarControl != null)
1592
			shortcutbarWasEnabled = shortcutBarControl.getEnabled();
1594
			shortcutbarWasEnabled = shortcutBarControl.getEnabled();
1595
		
1593
		try {
1596
		try {
1594
			if (shortcutBarControl != null && !shortcutBarControl.isDisposed())
1597
			if (shortcutBarControl != null && !shortcutBarControl.isDisposed())
1595
				shortcutBarControl.setEnabled(false);
1598
				shortcutBarControl.setEnabled(false);
1599
			 
1600
			if (filterWasEnabled) {
1601
				workbench.disableKeyFilter();
1602
			}
1596
			super.run(fork, cancelable, runnable);
1603
			super.run(fork, cancelable, runnable);
1597
		} finally {
1604
		} finally {
1598
			if (shortcutBarControl != null && !shortcutBarControl.isDisposed())
1605
			if (shortcutBarControl != null && !shortcutBarControl.isDisposed())
1599
				shortcutBarControl.setEnabled(shortcutbarWasEnabled);
1606
				shortcutBarControl.setEnabled(shortcutbarWasEnabled);
1607
			if (filterWasEnabled) {
1608
				workbench.enableKeyFilter();
1609
			}
1600
		}
1610
		}
1601
	}
1611
	}
1602
	/**
1612
	/**

Return to bug 42418