Chromium Code Reviews| Index: chrome/browser/ui/cocoa/extensions/extension_installed_bubble_controller.mm |
| diff --git a/chrome/browser/ui/cocoa/extensions/extension_installed_bubble_controller.mm b/chrome/browser/ui/cocoa/extensions/extension_installed_bubble_controller.mm |
| index 34f6227f409557f2fd821e7ba2a88ab20c35eeca..231fa62f354460f109ae3e0207eb38cc18af1d26 100644 |
| --- a/chrome/browser/ui/cocoa/extensions/extension_installed_bubble_controller.mm |
| +++ b/chrome/browser/ui/cocoa/extensions/extension_installed_bubble_controller.mm |
| @@ -92,11 +92,9 @@ class ExtensionLoadedNotificationObserver |
| icon:(SkBitmap)icon { |
| NSString* nibName = bundle ? @"ExtensionInstalledBubbleBundle" : |
| @"ExtensionInstalledBubble"; |
| - NSString* nibPath = [base::mac::FrameworkBundle() pathForResource:nibName |
| - ofType:@"nib"]; |
| - if ((self = [super initWithWindowNibPath:nibPath owner:self])) { |
| - DCHECK(parentWindow); |
| - parentWindow_ = parentWindow; |
| + if ((self = [super initWithWindowNibPath:nibName |
| + parentWindow:parentWindow |
| + anchoredAt:NSZeroPoint])) { |
| extension_ = extension; |
| bundle_ = bundle; |
| DCHECK(browser); |
| @@ -124,55 +122,28 @@ class ExtensionLoadedNotificationObserver |
| extensionObserver_.reset(new ExtensionLoadedNotificationObserver( |
| self, browser->profile())); |
| } |
| - |
| - // Watch to see if the parent window closes, and if so, close this one. |
| - NSNotificationCenter* center = [NSNotificationCenter defaultCenter]; |
| - [center addObserver:self |
| - selector:@selector(parentWindowWillClose:) |
| - name:NSWindowWillCloseNotification |
| - object:parentWindow_]; |
| } |
| return self; |
| } |
| -- (void)dealloc { |
| - [[NSNotificationCenter defaultCenter] removeObserver:self]; |
| - [super dealloc]; |
| -} |
| - |
| -- (void)close { |
| - [[[self window] parentWindow] removeChildWindow:[self window]]; |
| - [super close]; |
| -} |
| - |
| -- (void)parentWindowWillClose:(NSNotification*)notification { |
| - [self close]; |
| -} |
| - |
| - (void)windowWillClose:(NSNotification*)notification { |
| // Turn off page action icon preview when the window closes, unless we |
| // already removed it when the window resigned key status. |
| [self removePageActionPreviewIfNecessary]; |
| extension_ = NULL; |
| browser_ = NULL; |
| - parentWindow_ = nil; |
| - // We caught a close so we don't need to watch for the parent closing. |
| - [[NSNotificationCenter defaultCenter] removeObserver:self]; |
| - [self autorelease]; |
| + |
| + [super windowWillClose:notification]; |
| } |
| // The controller is the delegate of the window, so it receives "did resign |
| // key" notifications. When key is resigned, close the window. |
| - (void)windowDidResignKey:(NSNotification*)notification { |
| - NSWindow* window = [self window]; |
| - DCHECK_EQ([notification object], window); |
| - DCHECK([window isVisible]); |
| - |
| // If the browser window is closing, we need to remove the page action |
| // immediately, otherwise the closing animation may overlap with |
| // browser destruction. |
| [self removePageActionPreviewIfNecessary]; |
| - [self close]; |
| + [super windowDidResignKey:notification]; |
| } |
| - (IBAction)closeWindow:(id)sender { |
| @@ -264,7 +235,7 @@ class ExtensionLoadedNotificationObserver |
| // Load nib and calculate height based on messages to be shown. |
| NSWindow* window = [self initializeWindow]; |
| int newWindowHeight = [self calculateWindowHeight]; |
| - [infoBubbleView_ setFrameSize:NSMakeSize( |
| + [self.bubble setFrameSize:NSMakeSize( |
| NSWidth([[window contentView] bounds]), newWindowHeight)]; |
| NSSize windowDelta = NSMakeSize( |
| 0, newWindowHeight - NSHeight([[window contentView] bounds])); |
| @@ -277,19 +248,9 @@ class ExtensionLoadedNotificationObserver |
| [self setMessageFrames:newWindowHeight]; |
| // Find window origin, taking into account bubble size and arrow location. |
| - NSPoint origin = |
| - [parentWindow_ convertBaseToScreen:[self calculateArrowPoint]]; |
| - NSSize offsets = NSMakeSize(info_bubble::kBubbleArrowXOffset + |
| - info_bubble::kBubbleArrowWidth / 2.0, 0); |
| - offsets = [[window contentView] convertSize:offsets toView:nil]; |
| - if ([infoBubbleView_ arrowLocation] == info_bubble::kTopRight) |
| - origin.x -= NSWidth([window frame]) - offsets.width; |
| - origin.y -= NSHeight([window frame]); |
| - [window setFrameOrigin:origin]; |
| - |
| - [parentWindow_ addChildWindow:window |
| - ordered:NSWindowAbove]; |
| - [window makeKeyAndOrderFront:self]; |
| + self.anchorPoint = |
|
Nico
2012/03/14 23:59:46
bleh, property syntax for nontrivial setters :-/
|
| + [self.parentWindow convertBaseToScreen:[self calculateArrowPoint]]; |
| + [super showWindow:sender]; |
| } |
| // Finish nib loading, set arrow location and load icon into window. This |
| @@ -298,9 +259,9 @@ class ExtensionLoadedNotificationObserver |
| NSWindow* window = [self window]; // completes nib load |
| if (type_ == extension_installed_bubble::kOmniboxKeyword) { |
| - [infoBubbleView_ setArrowLocation:info_bubble::kTopLeft]; |
| + [self.bubble setArrowLocation:info_bubble::kTopLeft]; |
| } else { |
| - [infoBubbleView_ setArrowLocation:info_bubble::kTopRight]; |
| + [self.bubble setArrowLocation:info_bubble::kTopRight]; |
| } |
| if (type_ == extension_installed_bubble::kBundle) |