Index: chrome/browser/chromeos/chromeos_browser_extenders.cc |
diff --git a/chrome/browser/chromeos/chromeos_browser_extenders.cc b/chrome/browser/chromeos/chromeos_browser_extenders.cc |
index e7c8fcd2e4fed006ab488ab70ed1c5aced1e2ca1..9e3645e8c5f00ea2946d657b13cd3b1f6490acb6 100644 |
--- a/chrome/browser/chromeos/chromeos_browser_extenders.cc |
+++ b/chrome/browser/chromeos/chromeos_browser_extenders.cc |
@@ -6,6 +6,7 @@ |
#include "app/theme_provider.h" |
#include "chrome/app/chrome_dll_resource.h" |
+#include "chrome/browser/chromeos/compact_location_bar.h" |
#include "chrome/browser/chromeos/compact_navigation_bar.h" |
#include "chrome/browser/chromeos/main_menu.h" |
#include "chrome/browser/chromeos/status_area_view.h" |
@@ -14,6 +15,8 @@ |
#include "chrome/browser/views/frame/browser_frame_gtk.h" |
#include "chrome/browser/views/frame/browser_view.h" |
#include "chrome/browser/views/tabs/tab_overview_types.h" |
+#include "chrome/browser/views/tabs/tab_strip.h" |
+#include "chrome/browser/views/tabs/tab_strip_wrapper.h" |
#include "chrome/browser/views/toolbar_view.h" |
#include "grit/generated_resources.h" |
#include "grit/theme_resources.h" |
@@ -60,6 +63,7 @@ class NormalExtender : public BrowserExtender, |
main_menu_->SetImage(views::CustomButton::BS_PUSHED, image); |
browser_view()->AddChildView(main_menu_); |
+ compact_location_bar_.reset(new CompactLocationBar(browser_view())); |
compact_navigation_bar_ = |
new CompactNavigationBar(browser_view()->browser()); |
browser_view()->AddChildView(compact_navigation_bar_); |
@@ -96,6 +100,12 @@ class NormalExtender : public BrowserExtender, |
status_area_->SetVisible(true); |
} |
+ if (compact_navigation_bar_->IsVisible()) { |
+ // Update the size and location of the compact location bar. |
+ compact_location_bar_->UpdateBounds( |
+ browser_view()->tabstrip()->AsTabStrip()->GetSelectedTab()); |
+ } |
+ |
// Layout main menu before tab strip. |
gfx::Size main_menu_size = main_menu_->GetPreferredSize(); |
main_menu_->SetBounds(bounds.x(), bounds.y(), |
@@ -164,7 +174,28 @@ class NormalExtender : public BrowserExtender, |
compact_navigation_bar_enabled_ = !compact_navigation_bar_enabled_; |
} |
+ virtual void OnMouseEnteredToTab(Tab* tab) { |
+ ShowCompactLocationBarUnderSelectedTab(); |
+ } |
+ |
+ virtual void OnMouseMovedOnTab(Tab* tab) { |
+ ShowCompactLocationBarUnderSelectedTab(); |
+ } |
+ |
+ virtual void OnMouseExitedFromTab(Tab* tab) { |
+ compact_location_bar_->StartPopupTimer(); |
+ } |
+ |
private: |
+ // Shows the compact location bar under the selected tab. |
+ void ShowCompactLocationBarUnderSelectedTab() { |
+ if (!compact_navigation_bar_enabled_) |
+ return; |
+ compact_location_bar_->Update( |
+ browser_view()->tabstrip()->AsTabStrip()->GetSelectedTab(), |
+ browser_view()->browser()->GetSelectedTabContents()); |
+ } |
+ |
// Creates system menu. |
void InitSystemMenu() { |
system_menu_contents_.reset(new views::SimpleMenuModel(browser_view())); |
@@ -196,7 +227,7 @@ class NormalExtender : public BrowserExtender, |
// Status Area view. |
StatusAreaView* status_area_; |
- // System menus |
+ // System menus. |
scoped_ptr<views::SimpleMenuModel> system_menu_contents_; |
scoped_ptr<views::Menu2> system_menu_menu_; |
@@ -206,6 +237,9 @@ class NormalExtender : public BrowserExtender, |
// A toggle flag to show/hide the compact navigation bar. |
bool compact_navigation_bar_enabled_; |
+ // CompactLocationBar view. |
+ scoped_ptr<CompactLocationBar> compact_location_bar_; |
+ |
DISALLOW_COPY_AND_ASSIGN(NormalExtender); |
}; |
@@ -275,6 +309,12 @@ class PopupExtender : public BrowserExtender { |
virtual void ToggleCompactNavigationBar() {} |
+ virtual void OnMouseEnteredToTab(Tab* tab) {} |
+ |
+ virtual void OnMouseMovedOnTab(Tab* tab) {} |
+ |
+ virtual void OnMouseExitedFromTab(Tab* tab) {} |
+ |
// Controls interactions with the window manager for popup panels. |
scoped_ptr<PanelController> panel_controller_; |