diff options
Diffstat (limited to 'chrome/browser/views/frame/browser_view_layout.cc')
-rw-r--r-- | chrome/browser/views/frame/browser_view_layout.cc | 56 |
1 files changed, 53 insertions, 3 deletions
diff --git a/chrome/browser/views/frame/browser_view_layout.cc b/chrome/browser/views/frame/browser_view_layout.cc index 2b0f2e0..505a913 100644 --- a/chrome/browser/views/frame/browser_view_layout.cc +++ b/chrome/browser/views/frame/browser_view_layout.cc @@ -36,6 +36,11 @@ const int kBrowserViewTabStripHorizontalOverlap = 4; // An offset distance between certain toolbars and the toolbar that preceded // them in layout. const int kSeparationLineHeight = 1; +// Spacing between extension app icon and title. +const int kExtensionAppIconTitleSpacing = 4; +// We don't actually display the toolbar in extension app mode, but this is the +// height of the spacing where it usually goes. +const int kExtensionAppToolbarHeight = 7; } // namespace @@ -43,7 +48,9 @@ const int kSeparationLineHeight = 1; // BrowserViewLayout, public: BrowserViewLayout::BrowserViewLayout() - : tabstrip_(NULL), + : extension_app_icon_(NULL), + extension_app_title_(NULL), + tabstrip_(NULL), toolbar_(NULL), contents_split_(NULL), contents_container_(NULL), @@ -206,6 +213,8 @@ void BrowserViewLayout::Installed(views::View* host) { extension_shelf_ = NULL; active_bookmark_bar_ = NULL; tabstrip_ = NULL; + extension_app_icon_ = NULL; + extension_app_title_ = NULL; browser_view_ = static_cast<BrowserView*>(host); } @@ -235,6 +244,12 @@ void BrowserViewLayout::ViewAdded(views::View* host, views::View* view) { case VIEW_ID_TAB_STRIP: tabstrip_ = static_cast<BaseTabStrip*>(view); break; + case VIEW_ID_EXTENSION_APP_ICON: + extension_app_icon_ = static_cast<views::ImageView*>(view); + break; + case VIEW_ID_EXTENSION_APP_TITLE: + extension_app_title_ = static_cast<views::Label*>(view); + break; } } @@ -248,6 +263,7 @@ void BrowserViewLayout::ViewRemoved(views::View* host, views::View* view) { void BrowserViewLayout::Layout(views::View* host) { vertical_layout_rect_ = browser_view_->GetLocalBounds(true); + LayoutExtensionAppIconAndTitle(); int top = LayoutTabStrip(); top = LayoutToolbar(top); top = LayoutBookmarkAndInfoBars(top); @@ -276,6 +292,26 @@ gfx::Size BrowserViewLayout::GetPreferredSize(views::View* host) { ////////////////////////////////////////////////////////////////////////////// // BrowserViewLayout, private: +void BrowserViewLayout::LayoutExtensionAppIconAndTitle() { + if (browser_view_->browser()->type() != Browser::TYPE_EXTENSION_APP) + return; + + extension_app_icon_->SetVisible(true); + extension_app_icon_->SetBounds(0, 0, Extension::EXTENSION_ICON_SMALL, + Extension::EXTENSION_ICON_SMALL); + + extension_app_title_->SetVisible(true); + + // Position the title vertically centered with the icon and slightly to its + // right. + extension_app_title_->SetX( + extension_app_icon_->x() + extension_app_icon_->width() + + kExtensionAppIconTitleSpacing); + extension_app_title_->SetY( + extension_app_icon_->y() + + ((extension_app_icon_->height() - extension_app_title_->height()) / 2)); +} + int BrowserViewLayout::LayoutTabStrip() { if (!browser_view_->IsTabStripVisible()) { tabstrip_->SetVisible(false); @@ -314,8 +350,22 @@ int BrowserViewLayout::LayoutToolbar(int top) { ((visible && browser_view_->IsTabStripVisible()) ? kToolbarTabStripVerticalOverlap : 0); } - int height = visible ? toolbar_->GetPreferredSize().height() : 0; - toolbar_->SetVisible(visible); + int height = 0; + if (visible) { + if (browser_view_->browser()->type() == Browser::TYPE_EXTENSION_APP) { + // TODO(aa): Find a more sensible way to handle this. We want + // OpaqueBroserFrame to continue to paint the area where the toolstrip + // would be, but we don't actually want a toolbar in this case. + toolbar_->SetVisible(false); + height = kExtensionAppToolbarHeight; + } else { + toolbar_->SetVisible(true); + height = toolbar_->GetPreferredSize().height(); + } + } else { + toolbar_->SetVisible(false); + } + toolbar_->SetBounds(vertical_layout_rect_.x(), y, browser_view_width, height); return y + height; } |