From 3df83d10d891ca695eea044e64fc11c327402fb0 Mon Sep 17 00:00:00 2001 From: Corey Johnson Date: Mon, 7 Nov 2011 15:52:52 -0800 Subject: [PATCH] Save window size and position. Fixes #45 --- Atom/Classes/AtomApp.m | 12 +++++++++++- Atom/Classes/AtomController.m | 2 +- src/window.coffee | 26 +++++++++++++++++++++----- 3 files changed, 33 insertions(+), 7 deletions(-) diff --git a/Atom/Classes/AtomApp.m b/Atom/Classes/AtomApp.m index d7ad57380..55bb27855 100644 --- a/Atom/Classes/AtomApp.m +++ b/Atom/Classes/AtomApp.m @@ -23,7 +23,9 @@ AtomController *controller = [[AtomController alloc] initWithPath:path]; [controllers addObject:controller]; - [[controller window] makeKeyWindow]; + + // window.coffee will set the window size + [[controller window] setFrame:NSMakeRect(0, 0, 0, 0) display:YES animate:NO]; return controller; } @@ -81,6 +83,14 @@ } } +- (void)terminate:(id)sender { + for (AtomController *controller in controllers) { + [controller.jscocoa callJSFunctionNamed:@"shutdown" withArguments:nil]; + } + + [super terminate:sender]; +} + // AppDelegate - (void)applicationWillFinishLaunching:(NSNotification *)aNotification { self.controllers = [NSMutableArray array]; diff --git a/Atom/Classes/AtomController.m b/Atom/Classes/AtomController.m index 2b48bd24c..9964b4fdf 100644 --- a/Atom/Classes/AtomController.m +++ b/Atom/Classes/AtomController.m @@ -73,5 +73,5 @@ [(AtomApp *)NSApp removeController:self]; return YES; } - + @end diff --git a/src/window.coffee b/src/window.coffee index 1423aa981..765a459e2 100644 --- a/src/window.coffee +++ b/src/window.coffee @@ -28,6 +28,12 @@ windowAdditions = @path = $atomController.path @setTitle _.last @path.split '/' + # Remember sizing! + defaultFrame = x: 0, y: 0, width: 600, height: 800 + frame = Storage.get "window.frame.#{@path}", defaultFrame + rect = OSX.CGRectMake(frame.x, frame.y, frame.width, frame.height) + $atomController.window.setFrame_display rect, true + @editor = new Editor @browser = new Browser @@ -37,8 +43,18 @@ windowAdditions = @editor.restoreOpenBuffers() - storageKey: -> - "window:" + @path + $atomController.window.makeKeyWindow + + shutdown: -> + extension.shutdown() for name, extension of @extensions + + frame = $atomController.window.frame + x = frame.origin.x + y = frame.origin.y + width = frame.size.width + height = frame.size.height + + Storage.set "window.frame.#{@path}", {x:x, y:y, width:width, height:height} loadExtensions: -> extension.shutdown() for name, extension of @extensions @@ -79,19 +95,19 @@ windowAdditions = $atomController.window.title = title reload: -> + @shutdown() $atomController.close OSX.NSApp.createController @path open: (path) -> - $atomController.window.makeKeyAndOrderFront atomController + $atomController.window.makeKeyAndOrderFront $atomController Event.trigger 'window:open', path close: (path) -> - extension.shutdown() for name, extension of @extensions + @shutdown() $atomController.close Event.trigger 'window:close', path - # Global methods that are used by the cocoa side of things handleKeyEvent: -> KeyBinder.handleEvent.apply KeyBinder, arguments