diff --git a/native/atom_application.mm b/native/atom_application.mm index 85fcede68..769dbdbc2 100644 --- a/native/atom_application.mm +++ b/native/atom_application.mm @@ -128,6 +128,19 @@ } - (void)open:(NSString *)path { + NSArray *windows = [NSApp windows]; + int count = [windows count]; + for (int i = 0; i < count; i++) { + NSWindow *window = [windows objectAtIndex:i]; + if ([window isVisible] && ![window isExcludedFromWindowsMenu]) { + AtomWindowController *controller = [window windowController]; + if ([path isEqualToString:controller.pathToOpen]) { + [window makeKeyAndOrderFront:nil]; + return; + } + } + } + [[AtomWindowController alloc] initWithPath:path]; } diff --git a/native/atom_window_controller.h b/native/atom_window_controller.h index e1f177d1c..8789eda0c 100644 --- a/native/atom_window_controller.h +++ b/native/atom_window_controller.h @@ -21,6 +21,7 @@ class AtomCefClient; @property (nonatomic, retain) IBOutlet NSSplitView *splitView; @property (nonatomic, retain) IBOutlet NSView *webView; @property (nonatomic, retain) IBOutlet NSView *devToolsView; +@property (nonatomic, retain) NSString *pathToOpen; - (id)initWithPath:(NSString *)path; - (id)initUnstableWithPath:(NSString *)path; diff --git a/native/atom_window_controller.mm b/native/atom_window_controller.mm index 0aca7b6ea..67705f894 100644 --- a/native/atom_window_controller.mm +++ b/native/atom_window_controller.mm @@ -9,6 +9,7 @@ @synthesize splitView=_splitView; @synthesize webView=_webView; @synthesize devToolsView=_devToolsView; +@synthesize pathToOpen=_pathToOpen; - (void)dealloc { [_splitView release]; @@ -17,7 +18,7 @@ [_bootstrapScript release]; [_resourcePath release]; [_pathToOpen release]; - + _cefClient = NULL; _cefDevToolsClient = NULL;