OLD | NEW |
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 192 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
203 NSNotification* note = | 203 NSNotification* note = |
204 [NSNotification notificationWithName:NSWindowDidResignKeyNotification | 204 [NSNotification notificationWithName:NSWindowDidResignKeyNotification |
205 object:window]; | 205 object:window]; |
206 | 206 |
207 // The eventTap_ catches clicks within the application that are outside the | 207 // The eventTap_ catches clicks within the application that are outside the |
208 // window. | 208 // window. |
209 eventTap_ = [NSEvent | 209 eventTap_ = [NSEvent |
210 addLocalMonitorForEventsMatchingMask:NSLeftMouseDownMask | 210 addLocalMonitorForEventsMatchingMask:NSLeftMouseDownMask |
211 handler:^NSEvent* (NSEvent* event) { | 211 handler:^NSEvent* (NSEvent* event) { |
212 if (event.window != window) { | 212 if (event.window != window) { |
| 213 // Ignore this event if the window isn't key - in that case, it |
| 214 // can't resign key status in the first place. |
| 215 if (![window isKeyWindow]) |
| 216 return event; |
| 217 |
213 // Call via the runloop because this block is called in the | 218 // Call via the runloop because this block is called in the |
214 // middle of event dispatch. | 219 // middle of event dispatch. |
215 [self performSelector:@selector(windowDidResignKey:) | 220 [self performSelector:@selector(windowDidResignKey:) |
216 withObject:note | 221 withObject:note |
217 afterDelay:0]; | 222 afterDelay:0]; |
218 } | 223 } |
219 return event; | 224 return event; |
220 }]; | 225 }]; |
221 | 226 |
222 // The resignationObserver_ watches for when a window resigns key state, | 227 // The resignationObserver_ watches for when a window resigns key state, |
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
284 | 289 |
285 - (void)activateTabWithContents:(content::WebContents*)newContents | 290 - (void)activateTabWithContents:(content::WebContents*)newContents |
286 previousContents:(content::WebContents*)oldContents | 291 previousContents:(content::WebContents*)oldContents |
287 atIndex:(NSInteger)index | 292 atIndex:(NSInteger)index |
288 reason:(int)reason { | 293 reason:(int)reason { |
289 // The user switched tabs; close. | 294 // The user switched tabs; close. |
290 [self close]; | 295 [self close]; |
291 } | 296 } |
292 | 297 |
293 @end // BaseBubbleController | 298 @end // BaseBubbleController |
OLD | NEW |