Skip to content

Commit 19586ef

Browse files
Scene editor: fix undo-redo actions in Windows.
1 parent c1baf13 commit 19586ef

File tree

1 file changed

+47
-2
lines changed
  • source/v2/phasereditor/phasereditor.scene.ui.editor/src/phasereditor/scene/ui/editor

1 file changed

+47
-2
lines changed

source/v2/phasereditor/phasereditor.scene.ui.editor/src/phasereditor/scene/ui/editor/SceneEditor.java

Lines changed: 47 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,10 @@
3535
import org.eclipse.ui.IEditorSite;
3636
import org.eclipse.ui.IFileEditorInput;
3737
import org.eclipse.ui.IMemento;
38+
import org.eclipse.ui.IPartListener;
3839
import org.eclipse.ui.IPersistableEditor;
3940
import org.eclipse.ui.IWorkbench;
41+
import org.eclipse.ui.IWorkbenchPart;
4042
import org.eclipse.ui.PartInitException;
4143
import org.eclipse.ui.contexts.IContextActivation;
4244
import org.eclipse.ui.contexts.IContextService;
@@ -130,6 +132,7 @@ public String getLabel() {
130132
private SelectionEvents _selectionEvents;
131133
private IContextActivation _searchContextActivation;
132134
private SceneEditorBlockProvider _blocksProvider;
135+
private IPartListener _partListener;
133136

134137
public SceneEditor() {
135138
_outlinerSelectionListener = new ISelectionChangedListener() {
@@ -387,8 +390,10 @@ public SceneEditorBroker getBroker() {
387390
@Override
388391
public void dispose() {
389392

393+
getEditorSite().getPage().removePartListener(_partListener);
394+
390395
_broker.dispose();
391-
396+
392397
super.dispose();
393398
}
394399

@@ -487,7 +492,7 @@ public List<IEditorBlock> getBlocks() {
487492
public Runnable getRefreshHandler() {
488493
return _refreshHandler;
489494
}
490-
495+
491496
@Override
492497
public void setRefreshHandler(Runnable refresh) {
493498
_refreshHandler = refresh;
@@ -536,6 +541,7 @@ public void removePropertyPage(ScenePropertyPage page) {
536541
}
537542

538543
private void registerUndoRedoActions() {
544+
539545
var site = getEditorSite();
540546

541547
_undoRedoGroup = new UndoRedoActionGroup(site, undoContext, true);
@@ -545,6 +551,45 @@ private void registerUndoRedoActions() {
545551
_undoRedoGroup.fillActionBars(actionBars);
546552

547553
actionBars.updateActionBars();
554+
555+
_partListener = createUndoRedoPartListener();
556+
557+
getEditorSite().getPage().addPartListener(_partListener);
558+
559+
}
560+
561+
private IPartListener createUndoRedoPartListener() {
562+
return new IPartListener() {
563+
564+
@Override
565+
public void partOpened(IWorkbenchPart part) {
566+
//
567+
}
568+
569+
@Override
570+
public void partDeactivated(IWorkbenchPart part) {
571+
//
572+
}
573+
574+
@Override
575+
public void partClosed(IWorkbenchPart part) {
576+
//
577+
}
578+
579+
@Override
580+
public void partBroughtToTop(IWorkbenchPart part) {
581+
//
582+
}
583+
584+
@Override
585+
public void partActivated(IWorkbenchPart part) {
586+
if (part == SceneEditor.this) {
587+
var actionBars = getEditorSite().getActionBars();
588+
_undoRedoGroup.fillActionBars(actionBars);
589+
actionBars.updateActionBars();
590+
}
591+
}
592+
};
548593
}
549594

550595
public UndoRedoActionGroup getUndoRedoGroup() {

0 commit comments

Comments
 (0)