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

Side by Side Diff: chrome/browser/ui/cocoa/extensions/extension_popup_controller.mm

Issue 573143002: Mac: Give bubble windows an initial position before showing them. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 3 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
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/extensions/extension_popup_controller.h" 5 #import "chrome/browser/ui/cocoa/extensions/extension_popup_controller.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "base/callback.h" 9 #include "base/callback.h"
10 #include "chrome/browser/chrome_notification_types.h" 10 #include "chrome/browser/chrome_notification_types.h"
(...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after
167 if ((self = [super initWithWindow:window 167 if ((self = [super initWithWindow:window
168 parentWindow:parentWindow 168 parentWindow:parentWindow
169 anchoredAt:anchoredAt])) { 169 anchoredAt:anchoredAt])) {
170 host_.reset(host); 170 host_.reset(host);
171 beingInspected_ = devMode; 171 beingInspected_ = devMode;
172 ignoreWindowDidResignKey_ = NO; 172 ignoreWindowDidResignKey_ = NO;
173 173
174 InfoBubbleView* view = self.bubble; 174 InfoBubbleView* view = self.bubble;
175 [view setArrowLocation:arrowLocation]; 175 [view setArrowLocation:arrowLocation];
176 176
177 // alternative1: call [view setAnchorPoint:anchoredAt] here, drop the
178 // onWindowChanged diff chunk. (or some kind of positionWindow call).
179
180 // alternative2: hook into that setArrowLocation above in the bubble
181 // controller (also: alignment), and keep the window position consistent.
182
177 extensionView_ = host->view()->GetNativeView(); 183 extensionView_ = host->view()->GetNativeView();
178 container_.reset(new ExtensionPopupContainer(self)); 184 container_.reset(new ExtensionPopupContainer(self));
179 static_cast<ExtensionViewMac*>(host->view()) 185 static_cast<ExtensionViewMac*>(host->view())
180 ->set_container(container_.get()); 186 ->set_container(container_.get());
181 187
182 NSNotificationCenter* center = [NSNotificationCenter defaultCenter]; 188 NSNotificationCenter* center = [NSNotificationCenter defaultCenter];
183 [center addObserver:self 189 [center addObserver:self
184 selector:@selector(extensionViewFrameChanged) 190 selector:@selector(extensionViewFrameChanged)
185 name:NSViewFrameDidChangeNotification 191 name:NSViewFrameDidChangeNotification
186 object:extensionView_]; 192 object:extensionView_];
(...skipping 209 matching lines...) Expand 10 before | Expand all | Expand 10 after
396 402
397 [extensionView_ setFrame:frame]; 403 [extensionView_ setFrame:frame];
398 [extensionView_ setNeedsDisplay:YES]; 404 [extensionView_ setNeedsDisplay:YES];
399 } 405 }
400 406
401 - (void)onViewDidShow { 407 - (void)onViewDidShow {
402 [self onSizeChanged:pendingSize_]; 408 [self onSizeChanged:pendingSize_];
403 } 409 }
404 410
405 - (void)onWindowChanged { 411 - (void)onWindowChanged {
412 // The window is positioned before creating the host, to ensure the host is
413 // created with the correct screen information.
414 if (!host_)
415 return;
416
406 ExtensionViewMac* extensionView = 417 ExtensionViewMac* extensionView =
407 static_cast<ExtensionViewMac*>(host_->view()); 418 static_cast<ExtensionViewMac*>(host_->view());
408 // Let the extension view know, so that it can tell plugins. 419 // Let the extension view know, so that it can tell plugins.
409 if (extensionView) 420 if (extensionView)
410 extensionView->WindowFrameChanged(); 421 extensionView->WindowFrameChanged();
411 } 422 }
412 423
413 - (void)windowDidResize:(NSNotification*)notification { 424 - (void)windowDidResize:(NSNotification*)notification {
414 [self onWindowChanged]; 425 [self onWindowChanged];
415 } 426 }
(...skipping 13 matching lines...) Expand all
429 return minSize; 440 return minSize;
430 } 441 }
431 442
432 // Private (TestingAPI) 443 // Private (TestingAPI)
433 + (NSSize)maxPopupSize { 444 + (NSSize)maxPopupSize {
434 NSSize maxSize = {ExtensionViewMac::kMaxWidth, ExtensionViewMac::kMaxHeight}; 445 NSSize maxSize = {ExtensionViewMac::kMaxWidth, ExtensionViewMac::kMaxHeight};
435 return maxSize; 446 return maxSize;
436 } 447 }
437 448
438 @end 449 @end
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698