Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(157)

Side by Side Diff: chrome/browser/ui/cocoa/base_bubble_controller.mm

Issue 49063012: [rAC, OSX] Use bubble windows for error messages. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix failing tests. Created 7 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #import "chrome/browser/ui/cocoa/base_bubble_controller.h" 5 #import "chrome/browser/ui/cocoa/base_bubble_controller.h"
6 6
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #include "base/mac/bundle_locations.h" 8 #include "base/mac/bundle_locations.h"
9 #include "base/mac/mac_util.h" 9 #include "base/mac/mac_util.h"
10 #include "base/mac/scoped_nsobject.h" 10 #include "base/mac/scoped_nsobject.h"
(...skipping 11 matching lines...) Expand all
22 atIndex:(NSInteger)index 22 atIndex:(NSInteger)index
23 reason:(int)reason; 23 reason:(int)reason;
24 @end 24 @end
25 25
26 @implementation BaseBubbleController 26 @implementation BaseBubbleController
27 27
28 @synthesize parentWindow = parentWindow_; 28 @synthesize parentWindow = parentWindow_;
29 @synthesize anchorPoint = anchor_; 29 @synthesize anchorPoint = anchor_;
30 @synthesize bubble = bubble_; 30 @synthesize bubble = bubble_;
31 @synthesize shouldOpenAsKeyWindow = shouldOpenAsKeyWindow_; 31 @synthesize shouldOpenAsKeyWindow = shouldOpenAsKeyWindow_;
32 @synthesize shouldCloseOnResignKey = shouldCloseOnResignKey_;
32 33
33 - (id)initWithWindowNibPath:(NSString*)nibPath 34 - (id)initWithWindowNibPath:(NSString*)nibPath
34 parentWindow:(NSWindow*)parentWindow 35 parentWindow:(NSWindow*)parentWindow
35 anchoredAt:(NSPoint)anchoredAt { 36 anchoredAt:(NSPoint)anchoredAt {
36 nibPath = [base::mac::FrameworkBundle() pathForResource:nibPath 37 nibPath = [base::mac::FrameworkBundle() pathForResource:nibPath
37 ofType:@"nib"]; 38 ofType:@"nib"];
38 if ((self = [super initWithWindowNibPath:nibPath owner:self])) { 39 if ((self = [super initWithWindowNibPath:nibPath owner:self])) {
39 parentWindow_ = parentWindow; 40 parentWindow_ = parentWindow;
40 anchor_ = anchoredAt; 41 anchor_ = anchoredAt;
41 shouldOpenAsKeyWindow_ = YES; 42 shouldOpenAsKeyWindow_ = YES;
(...skipping 23 matching lines...) Expand all
65 } 66 }
66 67
67 - (id)initWithWindow:(NSWindow*)theWindow 68 - (id)initWithWindow:(NSWindow*)theWindow
68 parentWindow:(NSWindow*)parentWindow 69 parentWindow:(NSWindow*)parentWindow
69 anchoredAt:(NSPoint)anchoredAt { 70 anchoredAt:(NSPoint)anchoredAt {
70 DCHECK(theWindow); 71 DCHECK(theWindow);
71 if ((self = [super initWithWindow:theWindow])) { 72 if ((self = [super initWithWindow:theWindow])) {
72 parentWindow_ = parentWindow; 73 parentWindow_ = parentWindow;
73 anchor_ = anchoredAt; 74 anchor_ = anchoredAt;
74 shouldOpenAsKeyWindow_ = YES; 75 shouldOpenAsKeyWindow_ = YES;
76 shouldCloseOnResignKey_ = YES;
75 77
76 DCHECK(![[self window] delegate]); 78 DCHECK(![[self window] delegate]);
77 [theWindow setDelegate:self]; 79 [theWindow setDelegate:self];
78 80
79 base::scoped_nsobject<InfoBubbleView> contentView( 81 base::scoped_nsobject<InfoBubbleView> contentView(
80 [[InfoBubbleView alloc] initWithFrame:NSZeroRect]); 82 [[InfoBubbleView alloc] initWithFrame:NSZeroRect]);
81 [theWindow setContentView:contentView.get()]; 83 [theWindow setContentView:contentView.get()];
82 bubble_ = contentView.get(); 84 bubble_ = contentView.get();
83 85
84 // Watch to see if the parent window closes, and if so, close this one. 86 // Watch to see if the parent window closes, and if so, close this one.
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
177 [[[self window] parentWindow] removeChildWindow:[self window]]; 179 [[[self window] parentWindow] removeChildWindow:[self window]];
178 [super close]; 180 [super close];
179 } 181 }
180 182
181 // The controller is the delegate of the window so it receives did resign key 183 // The controller is the delegate of the window so it receives did resign key
182 // notifications. When key is resigned mirror Windows behavior and close the 184 // notifications. When key is resigned mirror Windows behavior and close the
183 // window. 185 // window.
184 - (void)windowDidResignKey:(NSNotification*)notification { 186 - (void)windowDidResignKey:(NSNotification*)notification {
185 NSWindow* window = [self window]; 187 NSWindow* window = [self window];
186 DCHECK_EQ([notification object], window); 188 DCHECK_EQ([notification object], window);
187 if ([window isVisible]) { 189 if ([window isVisible] && [self shouldCloseOnResignKey]) {
188 // If the window isn't visible, it is already closed, and this notification 190 // If the window isn't visible, it is already closed, and this notification
189 // has been sent as part of the closing operation, so no need to close. 191 // has been sent as part of the closing operation, so no need to close.
190 [self close]; 192 [self close];
191 } 193 }
192 } 194 }
193 195
194 // Since the bubble shares first responder with its parent window, set 196 // Since the bubble shares first responder with its parent window, set
195 // event handlers to dismiss the bubble when it would normally lose key 197 // event handlers to dismiss the bubble when it would normally lose key
196 // state. 198 // state.
197 - (void)registerKeyStateEventTap { 199 - (void)registerKeyStateEventTap {
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
284 286
285 - (void)activateTabWithContents:(content::WebContents*)newContents 287 - (void)activateTabWithContents:(content::WebContents*)newContents
286 previousContents:(content::WebContents*)oldContents 288 previousContents:(content::WebContents*)oldContents
287 atIndex:(NSInteger)index 289 atIndex:(NSInteger)index
288 reason:(int)reason { 290 reason:(int)reason {
289 // The user switched tabs; close. 291 // The user switched tabs; close.
290 [self close]; 292 [self close];
291 } 293 }
292 294
293 @end // BaseBubbleController 295 @end // BaseBubbleController
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698