| Index: chrome/browser/cocoa/confirm_quit_panel_controller.mm
|
| diff --git a/chrome/browser/cocoa/confirm_quit_panel_controller.mm b/chrome/browser/cocoa/confirm_quit_panel_controller.mm
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..5b624dde715daafae187f7f14090b7cc10cc12aa
|
| --- /dev/null
|
| +++ b/chrome/browser/cocoa/confirm_quit_panel_controller.mm
|
| @@ -0,0 +1,69 @@
|
| +// Copyright (c) 2010 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +#import <Cocoa/Cocoa.h>
|
| +#import <QuartzCore/QuartzCore.h>
|
| +
|
| +#include "base/logging.h"
|
| +#include "base/mac_util.h"
|
| +#include "base/scoped_nsobject.h"
|
| +#import "chrome/browser/cocoa/confirm_quit_panel_controller.h"
|
| +
|
| +@interface ConfirmQuitPanelController (Private)
|
| +- (void)animateFadeOut;
|
| +@end
|
| +
|
| +@implementation ConfirmQuitPanelController
|
| +
|
| +- (id)init {
|
| + NSString* nibPath =
|
| + [mac_util::MainAppBundle() pathForResource:@"ConfirmQuitPanel"
|
| + ofType:@"nib"];
|
| + if ((self = [super initWithWindowNibPath:nibPath owner:self])) {
|
| + }
|
| + return self;
|
| +}
|
| +
|
| +- (void)awakeFromNib {
|
| + DCHECK([self window]);
|
| + DCHECK_EQ(self, [[self window] delegate]);
|
| +}
|
| +
|
| +- (void)windowWillClose:(NSNotification*)notif {
|
| + // Release all animations because CAAnimation retains its delegate (self),
|
| + // which will cause a retain cycle. Break it!
|
| + [[self window] setAnimations:[NSDictionary dictionary]];
|
| + [self autorelease];
|
| +}
|
| +
|
| +- (void)showWindow:(id)sender {
|
| + [[self window] center];
|
| + [[self window] setAlphaValue:1.0];
|
| + [super showWindow:sender];
|
| +}
|
| +
|
| +- (void)dismissPanel {
|
| + [self performSelector:@selector(animateFadeOut)
|
| + withObject:nil
|
| + afterDelay:1.0];
|
| +}
|
| +
|
| +- (void)animateFadeOut {
|
| + NSWindow* window = [self window];
|
| + scoped_nsobject<CAAnimation> animation(
|
| + [[window animationForKey:@"alphaValue"] copy]);
|
| + [animation setDelegate:self];
|
| + [animation setDuration:0.2];
|
| + NSMutableDictionary* dictionary =
|
| + [NSMutableDictionary dictionaryWithDictionary:[window animations]];
|
| + [dictionary setObject:animation forKey:@"alphaValue"];
|
| + [window setAnimations:dictionary];
|
| + [[window animator] setAlphaValue:0.0];
|
| +}
|
| +
|
| +- (void)animationDidStop:(CAAnimation*)theAnimation finished:(BOOL)flag {
|
| + [self close];
|
| +}
|
| +
|
| +@end
|
|
|