From 47e4b067c3a56d4b2f5b3197989be16de7a14005 Mon Sep 17 00:00:00 2001 From: Dennis Ushakov Date: Fri, 26 Aug 2016 17:53:03 +0300 Subject: [PATCH] use project open processor if no project exists #IDEA-129532 fixed --- .../ide/MacOSApplicationProvider.java | 27 ++++++++++++------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/platform/platform-impl/src/com/intellij/ide/MacOSApplicationProvider.java b/platform/platform-impl/src/com/intellij/ide/MacOSApplicationProvider.java index 2f6962a46e84..8d67456bc2cc 100644 --- a/platform/platform-impl/src/com/intellij/ide/MacOSApplicationProvider.java +++ b/platform/platform-impl/src/com/intellij/ide/MacOSApplicationProvider.java @@ -32,7 +32,10 @@ import com.intellij.openapi.keymap.impl.IdeKeyEventDispatcher; import com.intellij.openapi.project.Project; import com.intellij.openapi.project.ProjectManager; import com.intellij.openapi.util.SystemInfo; +import com.intellij.openapi.vfs.LocalFileSystem; +import com.intellij.openapi.vfs.VirtualFile; import com.intellij.openapi.wm.IdeFocusManager; +import com.intellij.platform.PlatformProjectOpenProcessor; import com.intellij.ui.mac.foundation.Foundation; import com.intellij.ui.mac.foundation.ID; import com.sun.jna.Callback; @@ -40,7 +43,7 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import javax.swing.*; -import java.awt.Component; +import java.awt.*; import java.awt.color.ColorSpace; import java.awt.color.ICC_ColorSpace; import java.awt.color.ICC_Profile; @@ -143,11 +146,18 @@ public class MacOSApplicationProvider implements ApplicationComponent { return; } } - if (project != null) { - for (File file : list) { - if (file.exists()) { - LOG.debug("MacMenu: open file ", file); - OpenFileAction.openFile(file.getAbsolutePath(), project); + for (File file : list) { + if (file.exists()) { + LOG.debug("MacMenu: open file ", file); + String path = file.getAbsolutePath(); + if (project != null) { + OpenFileAction.openFile(path, project); + } else { + PlatformProjectOpenProcessor processor = PlatformProjectOpenProcessor.getInstanceIfItExists(); + if (processor != null) { + VirtualFile virtualFile = LocalFileSystem.getInstance().refreshAndFindFileByPath(path); + if (virtualFile != null && virtualFile.isValid()) processor.doOpenProject(virtualFile, null, false); + } } } } @@ -204,10 +214,7 @@ public class MacOSApplicationProvider implements ApplicationComponent { } else { Component component = IdeFocusManager.getGlobalInstance().getFocusOwner(); - if (component == null) { - LOG.debug("MacMenu: no focused component"); - } - else if (IdeKeyEventDispatcher.isModalContext(component)) { + if (component != null && IdeKeyEventDispatcher.isModalContext(component)) { LOG.debug("MacMenu: component in modal context"); } else {