diff options
-rw-r--r-- | chrome/browser/browser.cc | 10 | ||||
-rw-r--r-- | chrome/browser/browser_window.h | 3 | ||||
-rw-r--r-- | chrome/browser/cocoa/browser_window_cocoa.h | 1 | ||||
-rw-r--r-- | chrome/browser/gtk/browser_window_gtk.h | 1 | ||||
-rw-r--r-- | chrome/browser/views/frame/browser_view.cc | 6 | ||||
-rw-r--r-- | chrome/browser/views/frame/browser_view.h | 1 | ||||
-rw-r--r-- | chrome/browser/views/frame/browser_view_layout.cc | 16 | ||||
-rw-r--r-- | chrome/browser/views/toolbar_view.cc | 15 | ||||
-rw-r--r-- | chrome/browser/views/toolbar_view.h | 5 | ||||
-rw-r--r-- | chrome/test/test_browser_window.h | 1 |
10 files changed, 42 insertions, 17 deletions
diff --git a/chrome/browser/browser.cc b/chrome/browser/browser.cc index 0561187..e50d9a9 100644 --- a/chrome/browser/browser.cc +++ b/chrome/browser/browser.cc @@ -1144,8 +1144,9 @@ bool Browser::SupportsWindowFeatureImpl(WindowFeature feature, if (type() == TYPE_NORMAL || type() == TYPE_EXTENSION_APP) features |= FEATURE_TABSTRIP; - // Note: the toolbar is collapsed for TYPE_EXTENSION_APP but it is still - // there. + // TODO(aa): This is kinda a hack. The toolbar is not really there, it is + // collapsed. We probably want to add a FEATURE_MINI_TOOLBAR to represent + // the collapsed state. if (type() == TYPE_NORMAL || type() == TYPE_EXTENSION_APP) features |= FEATURE_TOOLBAR; @@ -2370,6 +2371,11 @@ void Browser::TabSelectedAt(TabContents* old_contents, session_id(), tabstrip_model_.selected_index()); } } + + // For TYPE_EXTENSION_APP we're always collapsed. For other windows, it + // depends on whether the tab is an app tab. + if (type_ != TYPE_EXTENSION_APP) + window()->SetToolbarCollapsedMode(new_contents->is_app()); } void Browser::TabMoved(TabContents* contents, diff --git a/chrome/browser/browser_window.h b/chrome/browser/browser_window.h index d0dc1f3..c23c4e1 100644 --- a/chrome/browser/browser_window.h +++ b/chrome/browser/browser_window.h @@ -304,6 +304,9 @@ class BrowserWindow { // Switches between available tabstrip display modes. virtual void ToggleTabStripMode() = 0; + // Set whether the toolbar displays in collapsed mode. + virtual void SetToolbarCollapsedMode(bool val) = 0; + // Construct a BrowserWindow implementation for the specified |browser|. static BrowserWindow* CreateBrowserWindow(Browser* browser); diff --git a/chrome/browser/cocoa/browser_window_cocoa.h b/chrome/browser/cocoa/browser_window_cocoa.h index ac70e38..3831dd0 100644 --- a/chrome/browser/cocoa/browser_window_cocoa.h +++ b/chrome/browser/cocoa/browser_window_cocoa.h @@ -102,6 +102,7 @@ class BrowserWindowCocoa : public BrowserWindow, virtual void Copy(); virtual void Paste(); virtual void ToggleTabStripMode() {} + virtual void SetToolbarCollapsedMode(bool val) {} // Overridden from NotificationObserver virtual void Observe(NotificationType type, diff --git a/chrome/browser/gtk/browser_window_gtk.h b/chrome/browser/gtk/browser_window_gtk.h index 732c65a..a2d1ef2 100644 --- a/chrome/browser/gtk/browser_window_gtk.h +++ b/chrome/browser/gtk/browser_window_gtk.h @@ -121,6 +121,7 @@ class BrowserWindowGtk : public BrowserWindow, virtual void Copy(); virtual void Paste(); virtual void ToggleTabStripMode() {} + virtual void SetToolbarCollapsedMode(bool val) {} // Overridden from NotificationObserver: virtual void Observe(NotificationType type, diff --git a/chrome/browser/views/frame/browser_view.cc b/chrome/browser/views/frame/browser_view.cc index 1a4fdd2..a447ed6 100644 --- a/chrome/browser/views/frame/browser_view.cc +++ b/chrome/browser/views/frame/browser_view.cc @@ -1239,6 +1239,10 @@ void BrowserView::ToggleTabStripMode() { frame_->TabStripDisplayModeChanged(); } +void BrowserView::SetToolbarCollapsedMode(bool val) { + toolbar_->set_collapsed(val); +} + /////////////////////////////////////////////////////////////////////////////// // BrowserView, BrowserWindowTesting implementation: @@ -1734,6 +1738,8 @@ void BrowserView::Init() { AddChildView(toolbar_); toolbar_->Init(browser_->profile()); toolbar_->SetAccessibleName(l10n_util::GetString(IDS_ACCNAME_TOOLBAR)); + if (browser_->type() == Browser::TYPE_EXTENSION_APP) + toolbar_->set_collapsed(true); infobar_container_ = new InfoBarContainer(this); AddChildView(infobar_container_); diff --git a/chrome/browser/views/frame/browser_view.h b/chrome/browser/views/frame/browser_view.h index 2693136..ece941b 100644 --- a/chrome/browser/views/frame/browser_view.h +++ b/chrome/browser/views/frame/browser_view.h @@ -336,6 +336,7 @@ class BrowserView : public BrowserBubbleHost, virtual void Copy(); virtual void Paste(); virtual void ToggleTabStripMode(); + virtual void SetToolbarCollapsedMode(bool val); // Overridden from BrowserWindowTesting: virtual BookmarkBarView* GetBookmarkBarView() const; diff --git a/chrome/browser/views/frame/browser_view_layout.cc b/chrome/browser/views/frame/browser_view_layout.cc index 8f2588d..3dcaf93 100644 --- a/chrome/browser/views/frame/browser_view_layout.cc +++ b/chrome/browser/views/frame/browser_view_layout.cc @@ -38,9 +38,6 @@ const int kBrowserViewTabStripHorizontalOverlap = 4; 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 @@ -350,18 +347,11 @@ int BrowserViewLayout::LayoutToolbar(int top) { y -= ((visible && browser_view_->IsTabStripVisible()) ? kToolbarTabStripVerticalOverlap : 0); } + 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(); - } + height = toolbar_->GetPreferredSize().height(); + toolbar_->SetVisible(true); } else { toolbar_->SetVisible(false); } diff --git a/chrome/browser/views/toolbar_view.cc b/chrome/browser/views/toolbar_view.cc index 5d445a9..b5e35e0 100644 --- a/chrome/browser/views/toolbar_view.cc +++ b/chrome/browser/views/toolbar_view.cc @@ -46,6 +46,9 @@ static const int kPopupTopSpacingNonGlass = 3; static const int kPopupBottomSpacingNonGlass = 2; static const int kPopupBottomSpacingGlass = 1; +// The height of the toolbar when it is in collapsed mode. +const int kCollapsedToolbarHeight = 7; + static SkBitmap* kPopupBackgroundEdge = NULL; //////////////////////////////////////////////////////////////////////////////// @@ -69,7 +72,8 @@ ToolbarView::ToolbarView(Browser* browser) last_focused_view_storage_id_(-1), menu_bar_emulation_mode_(false), ALLOW_THIS_IN_INITIALIZER_LIST(method_factory_(this)), - destroyed_flag_(NULL) { + destroyed_flag_(NULL), + collapsed_(false) { SetID(VIEW_ID_TOOLBAR); browser_->command_updater()->AddCommandObserver(IDC_BACK, this); browser_->command_updater()->AddCommandObserver(IDC_FORWARD, this); @@ -420,7 +424,10 @@ gfx::Size ToolbarView::GetPreferredSize() { normal_background = *rb.GetBitmapNamed(IDR_CONTENT_TOP_CENTER); } - return gfx::Size(min_width, normal_background.height()); + if (collapsed_) + return gfx::Size(min_width, kCollapsedToolbarHeight); + else + return gfx::Size(min_width, normal_background.height()); } int vertical_spacing = PopupTopSpacing() + @@ -443,6 +450,10 @@ void ToolbarView::Layout() { return; } + // In collapsed mode, we don't show any of the child controls. + for (int i = 0; i < GetChildViewCount(); ++i) + GetChildViewAt(i)->SetVisible(!collapsed_); + int child_y = std::min(kControlVertOffset, height()); // We assume all child elements are the same height. int child_height = diff --git a/chrome/browser/views/toolbar_view.h b/chrome/browser/views/toolbar_view.h index cdd3318..73d0294 100644 --- a/chrome/browser/views/toolbar_view.h +++ b/chrome/browser/views/toolbar_view.h @@ -87,6 +87,8 @@ class ToolbarView : public AccessibleToolbarView, LocationBarView* location_bar() const { return location_bar_; } views::MenuButton* page_menu() const { return page_menu_; } views::MenuButton* app_menu() const { return app_menu_; } + bool collapsed() const { return collapsed_; } + void set_collapsed(bool val) { collapsed_ = val; } // Overridden from views::FocusChangeListener: virtual void FocusWillChange(views::View* focused_before, @@ -232,6 +234,9 @@ class ToolbarView : public AccessibleToolbarView, // running. bool* destroyed_flag_; + // When collapsed, the toolbar is just a tiny strip, no controls are visible. + bool collapsed_; + DISALLOW_IMPLICIT_CONSTRUCTORS(ToolbarView); }; diff --git a/chrome/test/test_browser_window.h b/chrome/test/test_browser_window.h index 62ae201..c524c26 100644 --- a/chrome/test/test_browser_window.h +++ b/chrome/test/test_browser_window.h @@ -100,6 +100,7 @@ class TestBrowserWindow : public BrowserWindow { virtual void Copy() { } virtual void Paste() { } virtual void ToggleTabStripMode() {} + virtual void SetToolbarCollapsedMode(bool val) {} protected: virtual void DestroyBrowser() {} |