summaryrefslogtreecommitdiffstats
path: root/chrome/browser/views/tabs
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/browser/views/tabs')
-rw-r--r--chrome/browser/views/tabs/tab.cc31
-rw-r--r--chrome/browser/views/tabs/tab.h7
-rw-r--r--chrome/browser/views/tabs/tab_strip.cc6
-rw-r--r--chrome/browser/views/tabs/tab_strip.h6
4 files changed, 40 insertions, 10 deletions
diff --git a/chrome/browser/views/tabs/tab.cc b/chrome/browser/views/tabs/tab.cc
index efebda1..a775734 100644
--- a/chrome/browser/views/tabs/tab.cc
+++ b/chrome/browser/views/tabs/tab.cc
@@ -13,6 +13,7 @@
#include "base/compiler_specific.h"
#include "base/gfx/size.h"
#include "chrome/browser/tab_menu_model.h"
+#include "chrome/browser/views/frame/browser_extender.h"
#include "chrome/browser/views/frame/browser_view.h"
#include "chrome/browser/views/tabs/tab_strip.h"
#include "grit/generated_resources.h"
@@ -141,6 +142,11 @@ bool Tab::OnMousePressed(const views::MouseEvent& event) {
bool just_selected = !IsSelected();
if (just_selected) {
delegate_->SelectTab(this);
+ // This is a hack to update the compact location bar when the tab
+ // is selected. This is just an experiement and will be modified later.
+ // TODO(oshima): Improve the BrowserExtender interface if we
+ // decided to keep this UI, or remove this otherwise.
+ GetBrowserExtender()->OnMouseEnteredToTab(this);
}
delegate_->MaybeStartDrag(this, event);
}
@@ -168,6 +174,20 @@ void Tab::OnMouseReleased(const views::MouseEvent& event, bool canceled) {
delegate_->CloseTab(this);
}
+void Tab::OnMouseEntered(const views::MouseEvent& event) {
+ TabRenderer::OnMouseEntered(event);
+ GetBrowserExtender()->OnMouseEnteredToTab(this);
+}
+
+void Tab::OnMouseMoved(const views::MouseEvent& event) {
+ GetBrowserExtender()->OnMouseMovedOnTab(this);
+}
+
+void Tab::OnMouseExited(const views::MouseEvent& event) {
+ TabRenderer::OnMouseExited(event);
+ GetBrowserExtender()->OnMouseExitedFromTab(this);
+}
+
bool Tab::GetTooltipText(int x, int y, std::wstring* tooltip) {
std::wstring title = GetTitle();
if (!title.empty()) {
@@ -221,6 +241,17 @@ void Tab::ButtonPressed(views::Button* sender, const views::Event& event) {
///////////////////////////////////////////////////////////////////////////////
// Tab, private:
+BrowserExtender* Tab::GetBrowserExtender() {
+ // This is a hack to BrowserExtender from a Tab.
+ // TODO(oshima): Fix when the decision on compact location bar is made.
+ // Potential candidates are:
+ // * Use View ID with a cached reference to BrowserView.
+ // * Pass the BrowserView reference to Tabs.
+ // * Add GetBrowserView method to Delegate.
+ TabStrip* tab_strip = static_cast<TabStrip*>(delegate_);
+ return static_cast<BrowserView*>(tab_strip->GetParent())->browser_extender();
+}
+
void Tab::MakePathForTab(gfx::Path* path) const {
DCHECK(path);
diff --git a/chrome/browser/views/tabs/tab.h b/chrome/browser/views/tabs/tab.h
index 303a80a..e543ea3 100644
--- a/chrome/browser/views/tabs/tab.h
+++ b/chrome/browser/views/tabs/tab.h
@@ -12,6 +12,7 @@ namespace gfx {
class Path;
class Point;
}
+class BrowserExtender;
///////////////////////////////////////////////////////////////////////////////
//
@@ -94,6 +95,9 @@ class Tab : public TabRenderer,
virtual bool OnMouseDragged(const views::MouseEvent& event);
virtual void OnMouseReleased(const views::MouseEvent& event,
bool canceled);
+ virtual void OnMouseEntered(const views::MouseEvent& event);
+ virtual void OnMouseMoved(const views::MouseEvent& event);
+ virtual void OnMouseExited(const views::MouseEvent& event);
virtual bool GetTooltipText(int x, int y, std::wstring* tooltip);
virtual bool GetTooltipTextOrigin(int x, int y, gfx::Point* origin);
virtual std::string GetClassName() const { return kTabClassName; }
@@ -109,6 +113,9 @@ class Tab : public TabRenderer,
// views::ButtonListener overrides:
virtual void ButtonPressed(views::Button* sender, const views::Event& event);
+ // Returns the BrowserExtender of the window that this tab belongs to.
+ BrowserExtender* GetBrowserExtender();
+
// Creates a path that contains the clickable region of the tab's visual
// representation. Used by GetViewForPoint for hit-testing.
void MakePathForTab(gfx::Path* path) const;
diff --git a/chrome/browser/views/tabs/tab_strip.cc b/chrome/browser/views/tabs/tab_strip.cc
index 27bbb68..248506a 100644
--- a/chrome/browser/views/tabs/tab_strip.cc
+++ b/chrome/browser/views/tabs/tab_strip.cc
@@ -1052,10 +1052,6 @@ void TabStrip::ThemeChanged() {
LoadNewTabButtonImage();
}
-Tab* TabStrip::CreateTab() {
- return new Tab(this);
-}
-
void TabStrip::ViewHierarchyChanged(bool is_add,
views::View* parent,
views::View* child) {
@@ -1105,7 +1101,7 @@ void TabStrip::TabInsertedAt(TabContents* contents,
// Otherwise we need to make a new Tab.
if (!tab)
- tab = CreateTab();
+ tab = new Tab(this);
// Only insert if we're not already in the list.
if (!contains_tab) {
diff --git a/chrome/browser/views/tabs/tab_strip.h b/chrome/browser/views/tabs/tab_strip.h
index 27f6a97..9ecece6 100644
--- a/chrome/browser/views/tabs/tab_strip.h
+++ b/chrome/browser/views/tabs/tab_strip.h
@@ -12,6 +12,7 @@
#include "views/controls/button/image_button.h"
#include "views/view.h"
+class BrowserExtender;
class DraggedTabController;
class ScopedMouseCloseWidthCalculator;
class TabStripModel;
@@ -116,12 +117,7 @@ class TabStrip : public views::View,
virtual void SetAccessibleName(const std::wstring& name);
virtual views::View* GetViewForPoint(const gfx::Point& point);
virtual void ThemeChanged();
-
protected:
- // Creates a new tab.
- virtual Tab* CreateTab();
-
- // views::View implementation:
virtual void ViewHierarchyChanged(bool is_add,
views::View* parent,
views::View* child);