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

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

Issue 320393005: Close the bubble when entering full screen (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 6 months 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
« AUTHORS ('K') | « AUTHORS ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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"
11 #include "base/strings/string_util.h" 11 #include "base/strings/string_util.h"
12 #import "chrome/browser/ui/cocoa/browser_window_controller.h" 12 #import "chrome/browser/ui/cocoa/browser_window_controller.h"
13 #import "chrome/browser/ui/cocoa/info_bubble_view.h" 13 #import "chrome/browser/ui/cocoa/info_bubble_view.h"
14 #import "chrome/browser/ui/cocoa/tabs/tab_strip_model_observer_bridge.h" 14 #import "chrome/browser/ui/cocoa/tabs/tab_strip_model_observer_bridge.h"
15 #include "grit/generated_resources.h" 15 #include "grit/generated_resources.h"
16 #include "ui/base/l10n/l10n_util.h" 16 #include "ui/base/l10n/l10n_util.h"
17 17
18 @interface BaseBubbleController (Private) 18 @interface BaseBubbleController (Private)
19 - (void)registerForNotifications; 19 - (void)registerForNotifications;
20 - (void)updateOriginFromAnchor; 20 - (void)updateOriginFromAnchor;
21 - (void)activateTabWithContents:(content::WebContents*)newContents 21 - (void)activateTabWithContents:(content::WebContents*)newContents
22 previousContents:(content::WebContents*)oldContents 22 previousContents:(content::WebContents*)oldContents
23 atIndex:(NSInteger)index 23 atIndex:(NSInteger)index
24 reason:(int)reason; 24 reason:(int)reason;
25 - (void)recordAnchorOffset; 25 - (void)recordAnchorOffset;
26 - (void)parentWindowDidResize:(NSNotification*)notification; 26 - (void)parentWindowDidResize:(NSNotification*)notification;
27 - (void)parentWindowWillClose:(NSNotification*)notification; 27 - (void)parentWindowWillClose:(NSNotification*)notification;
28 - (void)parentWindowWillBecomeFullScreen:(NSNotification*)notification;
28 - (void)closeCleanup; 29 - (void)closeCleanup;
29 @end 30 @end
30 31
31 @implementation BaseBubbleController 32 @implementation BaseBubbleController
32 33
33 @synthesize parentWindow = parentWindow_; 34 @synthesize parentWindow = parentWindow_;
34 @synthesize anchorPoint = anchor_; 35 @synthesize anchorPoint = anchor_;
35 @synthesize bubble = bubble_; 36 @synthesize bubble = bubble_;
36 @synthesize shouldOpenAsKeyWindow = shouldOpenAsKeyWindow_; 37 @synthesize shouldOpenAsKeyWindow = shouldOpenAsKeyWindow_;
37 @synthesize shouldCloseOnResignKey = shouldCloseOnResignKey_; 38 @synthesize shouldCloseOnResignKey = shouldCloseOnResignKey_;
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
112 [super dealloc]; 113 [super dealloc];
113 } 114 }
114 115
115 - (void)registerForNotifications { 116 - (void)registerForNotifications {
116 NSNotificationCenter* center = [NSNotificationCenter defaultCenter]; 117 NSNotificationCenter* center = [NSNotificationCenter defaultCenter];
117 // Watch to see if the parent window closes, and if so, close this one. 118 // Watch to see if the parent window closes, and if so, close this one.
118 [center addObserver:self 119 [center addObserver:self
119 selector:@selector(parentWindowWillClose:) 120 selector:@selector(parentWindowWillClose:)
120 name:NSWindowWillCloseNotification 121 name:NSWindowWillCloseNotification
121 object:parentWindow_]; 122 object:parentWindow_];
123 // Watch for the full screen event, if so, close the bubble
124 [center addObserver:self
125 selector:@selector(parentWindowWillBecomeFullScreen:)
126 name:NSWindowWillEnterFullScreenNotification
Robert Sesek 2014/06/11 15:03:54 This notification is only available on 10.7 and la
127 object:parentWindow_];
122 // Watch for parent window's resizing, to ensure this one is always 128 // Watch for parent window's resizing, to ensure this one is always
123 // anchored correctly. 129 // anchored correctly.
124 [center addObserver:self 130 [center addObserver:self
125 selector:@selector(parentWindowDidResize:) 131 selector:@selector(parentWindowDidResize:)
126 name:NSWindowDidResizeNotification 132 name:NSWindowDidResizeNotification
127 object:parentWindow_]; 133 object:parentWindow_];
128 } 134 }
129 135
130 - (void)setAnchorPoint:(NSPoint)anchor { 136 - (void)setAnchorPoint:(NSPoint)anchor {
131 anchor_ = anchor; 137 anchor_ = anchor;
(...skipping 12 matching lines...) Expand all
144 - (NSBox*)separatorWithFrame:(NSRect)frame { 150 - (NSBox*)separatorWithFrame:(NSRect)frame {
145 frame.size.height = 1.0; 151 frame.size.height = 1.0;
146 base::scoped_nsobject<NSBox> spacer([[NSBox alloc] initWithFrame:frame]); 152 base::scoped_nsobject<NSBox> spacer([[NSBox alloc] initWithFrame:frame]);
147 [spacer setBoxType:NSBoxSeparator]; 153 [spacer setBoxType:NSBoxSeparator];
148 [spacer setBorderType:NSLineBorder]; 154 [spacer setBorderType:NSLineBorder];
149 [spacer setAlphaValue:0.2]; 155 [spacer setAlphaValue:0.2];
150 return [spacer.release() autorelease]; 156 return [spacer.release() autorelease];
151 } 157 }
152 158
153 - (void)parentWindowDidResize:(NSNotification*)notification { 159 - (void)parentWindowDidResize:(NSNotification*)notification {
160 if (!parentWindow_)
161 return;
162
154 DCHECK_EQ(parentWindow_, [notification object]); 163 DCHECK_EQ(parentWindow_, [notification object]);
155 NSPoint newOrigin = NSMakePoint(NSMinX([parentWindow_ frame]), 164 NSPoint newOrigin = NSMakePoint(NSMinX([parentWindow_ frame]),
156 NSMaxY([parentWindow_ frame])); 165 NSMaxY([parentWindow_ frame]));
157 newOrigin.x -= anchorOffset_.x; 166 newOrigin.x -= anchorOffset_.x;
158 newOrigin.y -= anchorOffset_.y; 167 newOrigin.y -= anchorOffset_.y;
159 [self setAnchorPoint:newOrigin]; 168 [self setAnchorPoint:newOrigin];
160 } 169 }
161 170
162 - (void)parentWindowWillClose:(NSNotification*)notification { 171 - (void)parentWindowWillClose:(NSNotification*)notification {
163 parentWindow_ = nil; 172 parentWindow_ = nil;
164 [self close]; 173 [self close];
165 } 174 }
166 175
176 - (void)parentWindowWillBecomeFullScreen:(NSNotification*)notification {
177 parentWindow_ = nil;
178 [self close];
179 }
180
167 - (void)closeCleanup { 181 - (void)closeCleanup {
168 if (eventTap_) { 182 if (eventTap_) {
169 [NSEvent removeMonitor:eventTap_]; 183 [NSEvent removeMonitor:eventTap_];
170 eventTap_ = nil; 184 eventTap_ = nil;
171 } 185 }
172 if (resignationObserver_) { 186 if (resignationObserver_) {
173 [[NSNotificationCenter defaultCenter] 187 [[NSNotificationCenter defaultCenter]
174 removeObserver:resignationObserver_ 188 removeObserver:resignationObserver_
175 name:NSWindowDidResignKeyNotification 189 name:NSWindowDidResignKeyNotification
176 object:nil]; 190 object:nil];
(...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after
327 341
328 - (void)activateTabWithContents:(content::WebContents*)newContents 342 - (void)activateTabWithContents:(content::WebContents*)newContents
329 previousContents:(content::WebContents*)oldContents 343 previousContents:(content::WebContents*)oldContents
330 atIndex:(NSInteger)index 344 atIndex:(NSInteger)index
331 reason:(int)reason { 345 reason:(int)reason {
332 // The user switched tabs; close. 346 // The user switched tabs; close.
333 [self close]; 347 [self close];
334 } 348 }
335 349
336 @end // BaseBubbleController 350 @end // BaseBubbleController
OLDNEW
« AUTHORS ('K') | « AUTHORS ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698