summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--chrome/browser/browser.cc10
-rw-r--r--chrome/browser/browser_window.h3
-rw-r--r--chrome/browser/cocoa/browser_window_cocoa.h1
-rw-r--r--chrome/browser/gtk/browser_window_gtk.h1
-rw-r--r--chrome/browser/views/frame/browser_view.cc6
-rw-r--r--chrome/browser/views/frame/browser_view.h1
-rw-r--r--chrome/browser/views/frame/browser_view_layout.cc16
-rw-r--r--chrome/browser/views/toolbar_view.cc15
-rw-r--r--chrome/browser/views/toolbar_view.h5
-rw-r--r--chrome/test/test_browser_window.h1
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() {}