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
This commit is contained in:
Aleksey Pivovarov
2014-08-26 20:02:44 +04:00
parent cb90f0e339
commit 2f61dd704b
2 changed files with 9 additions and 9 deletions
@@ -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;
}
@@ -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