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

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

Issue 7740044: Implement fullscreen info bubble on Win and Mac (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: win work Created 9 years, 2 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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/browser_window_controller_private.h" 5 #import "chrome/browser/ui/cocoa/browser_window_controller_private.h"
6 6
7 #include <cmath> 7 #include <cmath>
8 8
9 #include "base/command_line.h" 9 #include "base/command_line.h"
10 #import "base/memory/scoped_nsobject.h" 10 #import "base/memory/scoped_nsobject.h"
(...skipping 238 matching lines...) Expand 10 before | Expand all | Expand 10 after
249 // The floating bar backing view doesn't actually add any height. 249 // The floating bar backing view doesn't actually add any height.
250 NSRect floatingBarBackingRect = 250 NSRect floatingBarBackingRect =
251 NSMakeRect(minX, maxY, width, floatingBarHeight); 251 NSMakeRect(minX, maxY, width, floatingBarHeight);
252 [self layoutFloatingBarBackingView:floatingBarBackingRect 252 [self layoutFloatingBarBackingView:floatingBarBackingRect
253 presentationMode:inPresentationMode]; 253 presentationMode:inPresentationMode];
254 254
255 // Place the find bar immediately below the toolbar/attached bookmark bar. In 255 // Place the find bar immediately below the toolbar/attached bookmark bar. In
256 // presentation mode, it hangs off the top of the screen when the bar is 256 // presentation mode, it hangs off the top of the screen when the bar is
257 // hidden. The find bar is unaffected by the side tab positioning. 257 // hidden. The find bar is unaffected by the side tab positioning.
258 [findBarCocoaController_ positionFindBarViewAtMaxY:maxY maxWidth:width]; 258 [findBarCocoaController_ positionFindBarViewAtMaxY:maxY maxWidth:width];
259 [fullscreenExitBubbleController_ positionInWindowAtTop:maxY width:width];
259 260
260 // If in presentation mode, reset |maxY| to top of screen, so that the 261 // If in presentation mode, reset |maxY| to top of screen, so that the
261 // floating bar slides over the things which appear to be in the content area. 262 // floating bar slides over the things which appear to be in the content area.
262 if (inPresentationMode) 263 if (inPresentationMode)
263 maxY = NSMaxY(contentBounds); 264 maxY = NSMaxY(contentBounds);
264 265
265 // Also place the infobar container immediate below the toolbar, except in 266 // Also place the infobar container immediate below the toolbar, except in
266 // presentation mode in which case it's at the top of the visual content area. 267 // presentation mode in which case it's at the top of the visual content area.
267 maxY = [self layoutInfoBarAtMinX:minX maxY:maxY width:width]; 268 maxY = [self layoutInfoBarAtMinX:minX maxY:maxY width:width];
268 269
(...skipping 503 matching lines...) Expand 10 before | Expand all | Expand 10 after
772 // top chrome elements so it only sits atop the web contents. When in normal 773 // top chrome elements so it only sits atop the web contents. When in normal
773 // mode, it needs to draw over the bookmark bar and part of the toolbar. 774 // mode, it needs to draw over the bookmark bar and part of the toolbar.
774 [[infoBarContainerController_ view] removeFromSuperview]; 775 [[infoBarContainerController_ view] removeFromSuperview];
775 NSView* infoBarDest = [[self window] contentView]; 776 NSView* infoBarDest = [[self window] contentView];
776 [infoBarDest addSubview:[infoBarContainerController_ view] 777 [infoBarDest addSubview:[infoBarContainerController_ view]
777 positioned:fullscreen ? NSWindowBelow : NSWindowAbove 778 positioned:fullscreen ? NSWindowBelow : NSWindowAbove
778 relativeTo:fullscreen ? nil 779 relativeTo:fullscreen ? nil
779 : [toolbarController_ view]]; 780 : [toolbarController_ view]];
780 } 781 }
781 782
782 - (void)showFullscreenExitBubbleIfNecessary { 783 - (void)showFullscreenExitBubbleIfNecessaryWithURL:(const GURL&)url
784 showButtons:(BOOL)show_buttons {
783 if (!browser_->is_fullscreen_for_tab()) { 785 if (!browser_->is_fullscreen_for_tab()) {
784 return; 786 return;
785 } 787 }
786 788
787 [presentationModeController_ ensureOverlayHiddenWithAnimation:NO delay:NO]; 789 [presentationModeController_ ensureOverlayHiddenWithAnimation:NO delay:NO];
788 790
789 fullscreenExitBubbleController_.reset( 791 fullscreenExitBubbleController_.reset(
790 [[FullscreenExitBubbleController alloc] initWithOwner:self 792 [[FullscreenExitBubbleController alloc] initWithOwner:self
791 browser:browser_.get()]); 793 browser:browser_.get()
794 forURL:url
795 showButtons:show_buttons]);
792 NSView* contentView = [[self window] contentView]; 796 NSView* contentView = [[self window] contentView];
793 CGFloat maxWidth = NSWidth([contentView frame]); 797 CGFloat maxWidth = NSWidth([contentView frame]);
794 CGFloat maxY = NSMaxY([[[self window] contentView] frame]); 798 CGFloat maxY = NSMaxY([[[self window] contentView] frame]);
795 [fullscreenExitBubbleController_ 799 [fullscreenExitBubbleController_
796 positionInWindowAtTop:maxY width:maxWidth]; 800 positionInWindowAtTop:maxY width:maxWidth];
797 [contentView addSubview:[fullscreenExitBubbleController_ view] 801 [fullscreenExitBubbleController_ showWindow];
798 positioned:NSWindowAbove relativeTo:[self tabContentArea]];
799 } 802 }
800 803
801 - (void)destroyFullscreenExitBubbleIfNecessary { 804 - (void)destroyFullscreenExitBubbleIfNecessary {
802 [[fullscreenExitBubbleController_ view] removeFromSuperview]; 805 [fullscreenExitBubbleController_ close];
803 fullscreenExitBubbleController_.reset(); 806 fullscreenExitBubbleController_.reset();
804 } 807 }
805 808
806 - (void)contentViewDidResize:(NSNotification*)notification { 809 - (void)contentViewDidResize:(NSNotification*)notification {
807 [self layoutSubviews]; 810 [self layoutSubviews];
808 } 811 }
809 812
810 - (void)registerForContentViewResizeNotifications { 813 - (void)registerForContentViewResizeNotifications {
811 [[NSNotificationCenter defaultCenter] 814 [[NSNotificationCenter defaultCenter]
812 addObserver:self 815 addObserver:self
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
885 - (void)disableBarVisibilityUpdates { 888 - (void)disableBarVisibilityUpdates {
886 // Early escape if there's nothing to do. 889 // Early escape if there's nothing to do.
887 if (!barVisibilityUpdatesEnabled_) 890 if (!barVisibilityUpdatesEnabled_)
888 return; 891 return;
889 892
890 barVisibilityUpdatesEnabled_ = NO; 893 barVisibilityUpdatesEnabled_ = NO;
891 [presentationModeController_ cancelAnimationAndTimers]; 894 [presentationModeController_ cancelAnimationAndTimers];
892 } 895 }
893 896
894 @end // @implementation BrowserWindowController(Private) 897 @end // @implementation BrowserWindowController(Private)
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698