From 2f61dd704b60d3205ee75009c8217f9fb53364f9 Mon Sep 17 00:00:00 2001 From: Aleksey Pivovarov Date: Tue, 26 Aug 2014 19:24:17 +0400 Subject: [PATCH] IDEA-101657 diff: call "doCancelAction()" instead of "close()" on EditSource with active modal diff dialog this allows to handle such dialog cancellation in corresponding dialog --- .../openapi/diff/ex/DiffPanelOptions.java | 2 +- .../vcs/changes/ChangesFragmentedDiffPanel.java | 16 ++++++++-------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/platform/platform-impl/src/com/intellij/openapi/diff/ex/DiffPanelOptions.java b/platform/platform-impl/src/com/intellij/openapi/diff/ex/DiffPanelOptions.java index ec7a316357e2..3ad1a58a6732 100644 --- a/platform/platform-impl/src/com/intellij/openapi/diff/ex/DiffPanelOptions.java +++ b/platform/platform-impl/src/com/intellij/openapi/diff/ex/DiffPanelOptions.java @@ -93,7 +93,7 @@ public class DiffPanelOptions { while (window instanceof DialogWrapperDialog) { DialogWrapperDialog dlg = (DialogWrapperDialog)window; window = window.getParent(); - dlg.getDialogWrapper().close(DialogWrapper.CLOSE_EXIT_CODE); + dlg.getDialogWrapper().doCancelAction(); } return true; } diff --git a/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/ChangesFragmentedDiffPanel.java b/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/ChangesFragmentedDiffPanel.java index fca5f9a4188a..66c1fc1e7225 100644 --- a/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/ChangesFragmentedDiffPanel.java +++ b/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/ChangesFragmentedDiffPanel.java @@ -212,29 +212,29 @@ public class ChangesFragmentedDiffPanel implements Disposable { @Override public void actionPerformed(AnActionEvent e) { if (!getEnabled()) return; - OpenFileDescriptor descriptor = createDescriptor(); + final OpenFileDescriptor descriptor = createDescriptor(); if (descriptor == null) return; - final OpenFileDescriptor finalDescriptor = descriptor; + final Runnable runnable = new Runnable() { @Override public void run() { - FileEditorManager.getInstance(myProject).openTextEditor(finalDescriptor, true); + FileEditorManager.getInstance(myProject).openTextEditor(descriptor, true); } }; - if (! ModalityState.NON_MODAL.equals(ModalityState.current())) { + if (ModalityState.NON_MODAL.equals(ModalityState.current())) { + runnable.run(); + } + else { final Window window = KeyboardFocusManager.getCurrentKeyboardFocusManager().getActiveWindow(); if (window instanceof DialogWrapperDialog) { final DialogWrapper wrapper = ((DialogWrapperDialog)window).getDialogWrapper(); if (wrapper != null) { - Disposer.dispose(wrapper.getDisposable()); - wrapper.close(DialogWrapper.CANCEL_EXIT_CODE); + wrapper.doCancelAction(); ApplicationManager.getApplication().invokeLater(runnable, ModalityState.NON_MODAL, myProject.getDisposed()); - return; } } } - runnable.run(); } @Override