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

Unified Diff: chrome/browser/cocoa/browser_window_controller.mm

Issue 65011: Flatten down to a single toolbar per window, significantly simplifying the ta... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 11 years, 8 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/cocoa/browser_window_controller.mm
===================================================================
--- chrome/browser/cocoa/browser_window_controller.mm (revision 13420)
+++ chrome/browser/cocoa/browser_window_controller.mm (working copy)
@@ -14,7 +14,11 @@
#import "chrome/browser/cocoa/tab_strip_view.h"
#import "chrome/browser/cocoa/tab_strip_controller.h"
#import "chrome/browser/cocoa/tab_view.h"
+#import "chrome/browser/cocoa/toolbar_controller.h"
+@interface BrowserWindowController(Private)
+- (void)positionToolbar;
+@end
@implementation BrowserWindowController
@@ -43,7 +47,17 @@
// registering for the appropriate tab notifications from the back-end and
// managing the creation of new tabs.
tabStripController_ = [[TabStripController alloc]
- initWithView:[self tabStripView] browser:browser_];
+ initWithView:[self tabStripView]
+ switchView:[self tabContentArea]
+ browser:browser_];
+
+ // Create a controller for the toolbar, giving it the toolbar model object
+ // and the toolbar view from the nib. The controller will handle
+ // registering for the appropriate command state changes from the back-end.
+ toolbarController_ = [[ToolbarController alloc]
+ initWithModel:browser->toolbar_model()
+ commands:browser->command_updater()];
+ [self positionToolbar];
}
return self;
}
@@ -62,6 +76,28 @@
return windowShim_;
}
+// Position |toolbarView_| below the tab strip, but not as a sibling. The
+// toolbar is part of the window's contentView, mainly because we want the
+// opacity during drags to be the same as the web content.
+- (void)positionToolbar {
+ NSView* contentView = [self tabContentArea];
+ NSRect contentFrame = [contentView frame];
+ NSView* toolbarView = [toolbarController_ view];
+ NSRect toolbarFrame = [toolbarView frame];
+
+ // Shrink the content area by the height of the toolbar.
+ contentFrame.size.height -= toolbarFrame.size.height;
+ [contentView setFrame:contentFrame];
+
+ // Move the toolbar above the content area, within the window's content view
+ // (as opposed to the tab strip, which is a sibling).
+ toolbarFrame.origin.y = NSMaxY(contentFrame);
+ toolbarFrame.origin.x = 0;
+ toolbarFrame.size.width = contentFrame.size.width;
+ [toolbarView setFrame:toolbarFrame];
+ [[[self window] contentView] addSubview:toolbarView];
+}
+
- (void)destroyBrowser {
// We need the window to go away now.
[self autorelease];
@@ -172,29 +208,27 @@
}
- (LocationBar*)locationBar {
- return [tabStripController_ locationBar];
+ return [toolbarController_ locationBar];
}
- (void)updateToolbarWithContents:(TabContents*)tab
shouldRestoreState:(BOOL)shouldRestore {
- [tabStripController_ updateToolbarWithContents:tab
- shouldRestoreState:shouldRestore];
+ [toolbarController_ updateToolbarWithContents:shouldRestore ? tab : NULL];
}
- (void)setStarredState:(BOOL)isStarred {
- [tabStripController_ setStarredState:isStarred];
+ [toolbarController_ setStarredState:isStarred];
}
// Return the rect, in WebKit coordinates (flipped), of the window's grow box
// in the coordinate system of the content area of the currently selected tab.
// |windowGrowBox| needs to be in the window's coordinate system.
- (NSRect)selectedTabGrowBoxRect {
- return [tabStripController_
- selectedTabGrowBoxRect];
+ return [tabStripController_ selectedTabGrowBoxRect];
}
- (void)setIsLoading:(BOOL)isLoading {
- [tabStripController_ setIsLoading:isLoading];
+ [toolbarController_ setIsLoading:isLoading];
}
// Called to start/stop the loading animations.
@@ -211,7 +245,7 @@
// Make the location bar the first responder, if possible.
- (void)focusLocationBar {
- [tabStripController_ focusLocationBar];
+ [toolbarController_ focusLocationBar];
}
- (void)arrangeTabs {
@@ -313,4 +347,5 @@
UpdateUIForContents(new_contents);
#endif
}
+
@end

Powered by Google App Engine
This is Rietveld 408576698