diff options
author | oshima@chromium.org <oshima@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-11-05 02:12:37 +0000 |
---|---|---|
committer | oshima@chromium.org <oshima@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-11-05 02:12:37 +0000 |
commit | 287646f556b842dfd7dbebf1659c1ccbf8d90686 (patch) | |
tree | 0ac3b9e7383179fc0cd950e32683dde11a325da9 | |
parent | 556bd768bd40bb831086a04707613cb7f88601a2 (diff) | |
download | chromium_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.h | 3 | ||||
-rw-r--r-- | chrome/browser/chromeos/browser_extenders.cc | 1 | ||||
-rwxr-xr-x | chrome/browser/chromeos/status_area_view.cc | 50 | ||||
-rw-r--r-- | chrome/browser/chromeos/status_area_view.h | 4 | ||||
-rw-r--r-- | chrome/browser/cocoa/browser_window_cocoa.h | 1 | ||||
-rw-r--r-- | chrome/browser/cocoa/browser_window_cocoa.mm | 5 | ||||
-rw-r--r-- | chrome/browser/gtk/browser_window_gtk.cc | 4 | ||||
-rw-r--r-- | chrome/browser/gtk/browser_window_gtk.h | 1 | ||||
-rw-r--r-- | chrome/browser/views/frame/browser_view.cc | 14 | ||||
-rw-r--r-- | chrome/browser/views/frame/browser_view.h | 2 | ||||
-rw-r--r-- | chrome/test/test_browser_window.h | 1 |
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) {} |