[519003] Ensure undo/redo is activate when SMV has focus
Add focus handler to properly activate the undo/redo menu.
Bug: 519003
Change-Id: I1f75bc0558dd29d456cd1c741164e8f02650735f
Signed-off-by: Martin Fleck <mfleck@eclipsesource.com>
diff --git a/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/structuremergeviewer/EMFCompareStructureMergeViewer.java b/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/structuremergeviewer/EMFCompareStructureMergeViewer.java
index 01cf12f..d17cd1e 100644
--- a/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/structuremergeviewer/EMFCompareStructureMergeViewer.java
+++ b/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/structuremergeviewer/EMFCompareStructureMergeViewer.java
@@ -156,6 +156,7 @@
import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.jface.util.IPropertyChangeListener;
import org.eclipse.jface.util.PropertyChangeEvent;
+import org.eclipse.jface.viewers.AbstractTreeViewer;
import org.eclipse.jface.viewers.DelegatingStyledCellLabelProvider;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.ISelectionChangedListener;
@@ -171,6 +172,8 @@
import org.eclipse.swt.events.ControlAdapter;
import org.eclipse.swt.events.ControlEvent;
import org.eclipse.swt.events.DisposeEvent;
+import org.eclipse.swt.events.FocusAdapter;
+import org.eclipse.swt.events.FocusEvent;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.graphics.GC;
import org.eclipse.swt.graphics.Point;
@@ -688,6 +691,18 @@
treeViewer.getControl().setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
treeViewer.setUseHashlookup(true);
+ treeViewer.getControl().addFocusListener(new FocusAdapter() {
+ @Override
+ public void focusGained(FocusEvent e) {
+ fHandlerService.updatePaneActionHandlers(new Runnable() {
+ public void run() {
+ fHandlerService.setGlobalActionHandler(ActionFactory.UNDO.getId(), undoAction);
+ fHandlerService.setGlobalActionHandler(ActionFactory.REDO.getId(), redoAction);
+ }
+ });
+ }
+ });
+
dependencyData = new DependencyData(getCompareConfiguration());
tabFolder.setData(CompareUI.COMPARE_VIEWER_TITLE,