summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoroshima@chromium.org <oshima@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-11-05 02:12:37 +0000
committeroshima@chromium.org <oshima@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-11-05 02:12:37 +0000
commit287646f556b842dfd7dbebf1659c1ccbf8d90686 (patch)
tree0ac3b9e7383179fc0cd950e32683dde11a325da9
parent556bd768bd40bb831086a04707613cb7f88601a2 (diff)
downloadchromium_src-287646f556b842dfd7dbebf1659c1ccbf8d90686.zip
chromium_src-287646f556b842dfd7dbebf1659c1ccbf8d90686.tar.gz
chromium_src-287646f556b842dfd7dbebf1659c1ccbf8d90686.tar.bz2
Show only one app menu. Cole pointed out that ChromeOS currently has two almost identical app menu.
This CL will toggle app menu depending on the status of toolbar. - This is only for toolkit views build as gtk version does not toggle toolbar. - The menu contnets are not fully sync'ed. We need some refactoring, when we fully migrate to views. Review URL: http://codereview.chromium.org/366010 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@31061 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--chrome/browser/browser_window.h3
-rw-r--r--chrome/browser/chromeos/browser_extenders.cc1
-rwxr-xr-xchrome/browser/chromeos/status_area_view.cc50
-rw-r--r--chrome/browser/chromeos/status_area_view.h4
-rw-r--r--chrome/browser/cocoa/browser_window_cocoa.h1
-rw-r--r--chrome/browser/cocoa/browser_window_cocoa.mm5
-rw-r--r--chrome/browser/gtk/browser_window_gtk.cc4
-rw-r--r--chrome/browser/gtk/browser_window_gtk.h1
-rw-r--r--chrome/browser/views/frame/browser_view.cc14
-rw-r--r--chrome/browser/views/frame/browser_view.h2
-rw-r--r--chrome/test/test_browser_window.h1
11 files changed, 63 insertions, 23 deletions
diff --git a/chrome/browser/browser_window.h b/chrome/browser/browser_window.h
index e1a59a4..2ba45da 100644
--- a/chrome/browser/browser_window.h
+++ b/chrome/browser/browser_window.h
@@ -139,6 +139,9 @@ class BrowserWindow {
// Returns whether the bookmark bar is visible or not.
virtual bool IsBookmarkBarVisible() const = 0;
+ // Returns whether the tool bar is visible or not.
+ virtual bool IsToolbarVisible() const = 0;
+
// Returns the rect where the resize corner should be drawn by the render
// widget host view (on top of what the renderer returns). We return an empty
// rect to identify that there shouldn't be a resize corner (in the cases
diff --git a/chrome/browser/chromeos/browser_extenders.cc b/chrome/browser/chromeos/browser_extenders.cc
index 9bdae51..0c902c3 100644
--- a/chrome/browser/chromeos/browser_extenders.cc
+++ b/chrome/browser/chromeos/browser_extenders.cc
@@ -172,6 +172,7 @@ class NormalExtender : public BrowserExtender,
virtual void ToggleCompactNavigationBar() {
compact_navigation_bar_enabled_ = !compact_navigation_bar_enabled_;
+ status_area_->Update();
}
virtual void OnMouseEnteredToTab(Tab* tab) {
diff --git a/chrome/browser/chromeos/status_area_view.cc b/chrome/browser/chromeos/status_area_view.cc
index 942e535..f880ab5 100755
--- a/chrome/browser/chromeos/status_area_view.cc
+++ b/chrome/browser/chromeos/status_area_view.cc
@@ -19,6 +19,8 @@
#include "chrome/browser/chromeos/status_area_button.h"
#if !defined(TOOLKIT_VIEWS)
#include "chrome/browser/gtk/browser_window_gtk.h"
+#else
+#include "chrome/browser/views/frame/browser_view.h"
#endif
#include "chrome/browser/profile.h"
#include "grit/chromium_strings.h"
@@ -149,16 +151,29 @@ void StatusAreaView::Init() {
AddChildView(menu_view_);
}
+void StatusAreaView::Update() {
+#if defined(TOOLKIT_VIEWS)
+ // We only turn on/off the menu for views because
+ // gtk version will not hide the toolbar in compact
+ // navigation bar mode.
+ menu_view_->SetVisible(
+ !browser_->window()->IsToolbarVisible());
+#endif
+}
+
gfx::Size StatusAreaView::GetPreferredSize() {
// Start with padding.
int result_w = kLeftBorder + kClockSeparation;
int result_h = 0;
for (int i = 0; i < GetChildViewCount(); i++) {
- gfx::Size cur_size = GetChildViewAt(i)->GetPreferredSize();
- // Add each width.
- result_w += cur_size.width();
- // Use max height.
- result_h = std::max(result_h, cur_size.height());
+ views::View* cur = GetChildViewAt(i);
+ if (cur->IsVisible()) {
+ gfx::Size cur_size = cur->GetPreferredSize();
+ // Add each width.
+ result_w += cur_size.width();
+ // Use max height.
+ result_h = std::max(result_h, cur_size.height());
+ }
}
return gfx::Size(result_w, result_h);
}
@@ -167,20 +182,22 @@ void StatusAreaView::Layout() {
int cur_x = kLeftBorder;
for (int i = 0; i < GetChildViewCount(); i++) {
views::View* cur = GetChildViewAt(i);
- gfx::Size cur_size = cur->GetPreferredSize();
- int cur_y = (height() - cur_size.height()) / 2;
+ if (cur->IsVisible()) {
+ gfx::Size cur_size = cur->GetPreferredSize();
+ int cur_y = (height() - cur_size.height()) / 2;
- // Handle odd number of pixels.
- cur_y += (height() - cur_size.height()) % 2;
+ // Handle odd number of pixels.
+ cur_y += (height() - cur_size.height()) % 2;
- // Put next in row horizontally, and center vertically.
- cur->SetBounds(cur_x, cur_y, cur_size.width(), cur_size.height());
+ // Put next in row horizontally, and center vertically.
+ cur->SetBounds(cur_x, cur_y, cur_size.width(), cur_size.height());
- cur_x += cur_size.width();
+ cur_x += cur_size.width();
- // Buttons have built in padding, but clock doesn't.
- if (cur == clock_view_)
- cur_x += kClockSeparation;
+ // Buttons have built in padding, but clock doesn't.
+ if (cur == clock_view_)
+ cur_x += kClockSeparation;
+ }
}
}
@@ -235,6 +252,9 @@ void StatusAreaView::CreateAppMenu() {
IDS_BOOKMARK_MANAGER);
app_menu_contents_->AddItemWithStringId(IDC_SHOW_DOWNLOADS,
IDS_SHOW_DOWNLOADS);
+ // Create the manage extensions menu item.
+ app_menu_contents_->AddItemWithStringId(IDC_MANAGE_EXTENSIONS,
+ IDS_SHOW_EXTENSIONS);
app_menu_contents_->AddSeparator();
app_menu_contents_->AddItemWithStringId(IDC_CLEAR_BROWSING_DATA,
IDS_CLEAR_BROWSING_DATA);
diff --git a/chrome/browser/chromeos/status_area_view.h b/chrome/browser/chromeos/status_area_view.h
index bb815fe..73b08f1 100644
--- a/chrome/browser/chromeos/status_area_view.h
+++ b/chrome/browser/chromeos/status_area_view.h
@@ -39,6 +39,10 @@ class StatusAreaView : public views::View,
void Init();
+ // Called when the compact navigation bar mode has changed to
+ // toggle the app menu visibility.
+ void Update();
+
// views::View* overrides.
virtual gfx::Size GetPreferredSize();
virtual void Layout();
diff --git a/chrome/browser/cocoa/browser_window_cocoa.h b/chrome/browser/cocoa/browser_window_cocoa.h
index 11cc840..74220e5 100644
--- a/chrome/browser/cocoa/browser_window_cocoa.h
+++ b/chrome/browser/cocoa/browser_window_cocoa.h
@@ -56,6 +56,7 @@ class BrowserWindowCocoa : public BrowserWindow,
bool should_restore_state);
virtual void FocusToolbar();
virtual bool IsBookmarkBarVisible() const;
+ virtual bool IsToolbarVisible() const;
virtual gfx::Rect GetRootWindowResizerRect() const;
virtual void ConfirmAddSearchProvider(const TemplateURL* template_url,
Profile* profile);
diff --git a/chrome/browser/cocoa/browser_window_cocoa.mm b/chrome/browser/cocoa/browser_window_cocoa.mm
index 9eee4c7..10f206f 100644
--- a/chrome/browser/cocoa/browser_window_cocoa.mm
+++ b/chrome/browser/cocoa/browser_window_cocoa.mm
@@ -202,6 +202,11 @@ bool BrowserWindowCocoa::IsBookmarkBarVisible() const {
return browser_->profile()->GetPrefs()->GetBoolean(prefs::kShowBookmarkBar);
}
+bool BrowserWindowCocoa::IsToolbarVisible() const {
+ NOTIMPLEMENTED();
+ return true;
+}
+
// This is called from Browser, which in turn is called directly from
// a menu option. All we do here is set a preference. The act of
// setting the preference sends notifications to all windows who then
diff --git a/chrome/browser/gtk/browser_window_gtk.cc b/chrome/browser/gtk/browser_window_gtk.cc
index e72d335..443df13 100644
--- a/chrome/browser/gtk/browser_window_gtk.cc
+++ b/chrome/browser/gtk/browser_window_gtk.cc
@@ -1045,6 +1045,10 @@ bool BrowserWindowGtk::IsBookmarkBarVisible() const {
bookmark_bar_.get();
}
+bool BrowserWindowGtk::IsToolbarVisible() const {
+ return IsToolbarSupported();
+}
+
gfx::Rect BrowserWindowGtk::GetRootWindowResizerRect() const {
return gfx::Rect();
}
diff --git a/chrome/browser/gtk/browser_window_gtk.h b/chrome/browser/gtk/browser_window_gtk.h
index 1f5f91c..65c18b0 100644
--- a/chrome/browser/gtk/browser_window_gtk.h
+++ b/chrome/browser/gtk/browser_window_gtk.h
@@ -85,6 +85,7 @@ class BrowserWindowGtk : public BrowserWindow,
bool should_restore_state);
virtual void FocusToolbar();
virtual bool IsBookmarkBarVisible() const;
+ virtual bool IsToolbarVisible() const;
virtual gfx::Rect GetRootWindowResizerRect() const;
virtual void ConfirmAddSearchProvider(const TemplateURL* template_url,
Profile* profile);
diff --git a/chrome/browser/views/frame/browser_view.cc b/chrome/browser/views/frame/browser_view.cc
index 57e864c..771f65a 100644
--- a/chrome/browser/views/frame/browser_view.cc
+++ b/chrome/browser/views/frame/browser_view.cc
@@ -567,13 +567,6 @@ gfx::Rect BrowserView::GetTabStripBounds() const {
return frame_->GetBoundsForTabStrip(tabstrip_);
}
-bool BrowserView::IsToolbarVisible() const {
- if (browser_extender_->ShouldForceHideToolbar())
- return false;
- return browser_->SupportsWindowFeature(Browser::FEATURE_TOOLBAR) ||
- browser_->SupportsWindowFeature(Browser::FEATURE_LOCATIONBAR);
-}
-
bool BrowserView::IsTabStripVisible() const {
return browser_->SupportsWindowFeature(Browser::FEATURE_TABSTRIP);
}
@@ -966,6 +959,13 @@ bool BrowserView::IsBookmarkBarVisible() const {
(active_bookmark_bar_->GetPreferredSize().height() != 0);
}
+bool BrowserView::IsToolbarVisible() const {
+ if (browser_extender_->ShouldForceHideToolbar())
+ return false;
+ return browser_->SupportsWindowFeature(Browser::FEATURE_TOOLBAR) ||
+ browser_->SupportsWindowFeature(Browser::FEATURE_LOCATIONBAR);
+}
+
gfx::Rect BrowserView::GetRootWindowResizerRect() const {
if (frame_->GetWindow()->IsMaximized() || frame_->GetWindow()->IsFullscreen())
return gfx::Rect();
diff --git a/chrome/browser/views/frame/browser_view.h b/chrome/browser/views/frame/browser_view.h
index 497ec49..d9baada 100644
--- a/chrome/browser/views/frame/browser_view.h
+++ b/chrome/browser/views/frame/browser_view.h
@@ -137,7 +137,6 @@ class BrowserView : public BrowserWindow,
ExtensionShelf* extension_shelf() const { return extension_shelf_; }
// Returns true if various window components are visible.
- bool IsToolbarVisible() const;
bool IsTabStripVisible() const;
// Returns true if the profile associated with this Browser window is
@@ -234,6 +233,7 @@ class BrowserView : public BrowserWindow,
virtual void FocusToolbar();
virtual void DestroyBrowser();
virtual bool IsBookmarkBarVisible() const;
+ virtual bool IsToolbarVisible() const;
virtual gfx::Rect GetRootWindowResizerRect() const;
virtual void DisableInactiveFrame();
virtual void ConfirmAddSearchProvider(const TemplateURL* template_url,
diff --git a/chrome/test/test_browser_window.h b/chrome/test/test_browser_window.h
index c8fb5e5..22e36c1 100644
--- a/chrome/test/test_browser_window.h
+++ b/chrome/test/test_browser_window.h
@@ -55,6 +55,7 @@ class TestBrowserWindow : public BrowserWindow {
#endif
virtual bool IsBookmarkBarVisible() const { return false; }
+ virtual bool IsToolbarVisible() const { return false; }
virtual gfx::Rect GetRootWindowResizerRect() const { return gfx::Rect(); }
virtual void ConfirmAddSearchProvider(const TemplateURL* template_url,
Profile* profile) {}