summaryrefslogtreecommitdiffstats
path: root/chrome/browser/ui/views/tabs/tab.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/browser/ui/views/tabs/tab.cc')
-rw-r--r--chrome/browser/ui/views/tabs/tab.cc80
1 files changed, 39 insertions, 41 deletions
diff --git a/chrome/browser/ui/views/tabs/tab.cc b/chrome/browser/ui/views/tabs/tab.cc
index 98e19cc..e24478e 100644
--- a/chrome/browser/ui/views/tabs/tab.cc
+++ b/chrome/browser/ui/views/tabs/tab.cc
@@ -53,9 +53,9 @@ static const int kMiniTabRendererAsNormalTabWidth =
// How opaque to make the hover state (out of 1).
static const double kHoverOpacity = 0.33;
-Tab::TabImage Tab::tab_alpha = {0};
-Tab::TabImage Tab::tab_active = {0};
-Tab::TabImage Tab::tab_inactive = {0};
+Tab::TabImage Tab::tab_alpha_ = {0};
+Tab::TabImage Tab::tab_active_ = {0};
+Tab::TabImage Tab::tab_inactive_ = {0};
// Durations for the various parts of the mini tab title animation.
static const int kMiniTitleChangeAnimationDuration1MS = 1600;
@@ -82,19 +82,6 @@ static const SkScalar kTabCapWidth = 15;
static const SkScalar kTabTopCurveWidth = 4;
static const SkScalar kTabBottomCurveWidth = 3;
-namespace {
-
-void InitTabResources() {
- static bool initialized = false;
- if (initialized)
- return;
-
- initialized = true;
- Tab::LoadTabImages();
-}
-
-} // namespace
-
// static
const char Tab::kViewClassName[] = "browser/tabs/Tab";
@@ -140,10 +127,6 @@ void Tab::StopMiniTabTitleAnimation() {
mini_title_animation_->Stop();
}
-void Tab::PaintIcon(gfx::Canvas* canvas) {
- BaseTab::PaintIcon(canvas, favicon_bounds_.x(), favicon_bounds_.y());
-}
-
// static
gfx::Size Tab::GetMinimumUnselectedSize() {
InitTabResources();
@@ -152,7 +135,7 @@ gfx::Size Tab::GetMinimumUnselectedSize() {
minimum_size.set_width(kLeftPadding + kRightPadding);
// Since we use bitmap images, the real minimum height of the image is
// defined most accurately by the height of the end cap images.
- minimum_size.set_height(tab_active.image_l->height());
+ minimum_size.set_height(tab_active_.image_l->height());
return minimum_size;
}
@@ -321,7 +304,7 @@ void Tab::Layout() {
}
void Tab::OnThemeChanged() {
- Tab::LoadTabImages();
+ LoadTabImages();
}
bool Tab::HasHitTestMask() const {
@@ -370,6 +353,10 @@ void Tab::OnMouseMoved(const views::MouseEvent& e) {
////////////////////////////////////////////////////////////////////////////////
// Tab, private
+void Tab::PaintIcon(gfx::Canvas* canvas) {
+ BaseTab::PaintIcon(canvas, favicon_bounds_.x(), favicon_bounds_.y());
+}
+
void Tab::PaintTabBackground(gfx::Canvas* canvas) {
if (IsSelected()) {
PaintActiveTabBackground(canvas);
@@ -465,9 +452,9 @@ void Tab::PaintInactiveTabBackground(gfx::Canvas* canvas) {
SkBitmap* tab_bg = GetThemeProvider()->GetBitmapNamed(tab_id);
- TabImage* tab_image = &tab_active;
- TabImage* tab_inactive_image = &tab_inactive;
- TabImage* alpha = &tab_alpha;
+ TabImage* tab_image = &tab_active_;
+ TabImage* tab_inactive_image = &tab_inactive_;
+ TabImage* alpha = &tab_alpha_;
// If the theme is providing a custom background image, then its top edge
// should be at the top of the tab. Otherwise, we assume that the background
@@ -539,13 +526,12 @@ void Tab::PaintActiveTabBackground(gfx::Canvas* canvas) {
int offset = GetX(views::View::APPLY_MIRRORING_TRANSFORMATION) +
background_offset_.x();
ThemeProvider* tp = GetThemeProvider();
- if (!tp)
- NOTREACHED() << "Unable to get theme provider";
+ DCHECK(tp) << "Unable to get theme provider";
SkBitmap* tab_bg = GetThemeProvider()->GetBitmapNamed(IDR_THEME_TOOLBAR);
- TabImage* tab_image = &tab_active;
- TabImage* alpha = &tab_alpha;
+ TabImage* tab_image = &tab_active_;
+ TabImage* alpha = &tab_alpha_;
// Draw left edge.
SkBitmap tab_l = SkBitmapOperations::CreateTiledBitmap(
@@ -655,22 +641,34 @@ double Tab::GetThrobValue() {
// Tab, private:
// static
+void Tab::InitTabResources() {
+ static bool initialized = false;
+ if (initialized)
+ return;
+
+ initialized = true;
+
+ // Load the tab images once now, and maybe again later if the theme changes.
+ LoadTabImages();
+}
+
+// static
void Tab::LoadTabImages() {
// We're not letting people override tab images just yet.
ResourceBundle& rb = ResourceBundle::GetSharedInstance();
- tab_alpha.image_l = rb.GetBitmapNamed(IDR_TAB_ALPHA_LEFT);
- tab_alpha.image_r = rb.GetBitmapNamed(IDR_TAB_ALPHA_RIGHT);
+ tab_alpha_.image_l = rb.GetBitmapNamed(IDR_TAB_ALPHA_LEFT);
+ tab_alpha_.image_r = rb.GetBitmapNamed(IDR_TAB_ALPHA_RIGHT);
- tab_active.image_l = rb.GetBitmapNamed(IDR_TAB_ACTIVE_LEFT);
- tab_active.image_c = rb.GetBitmapNamed(IDR_TAB_ACTIVE_CENTER);
- tab_active.image_r = rb.GetBitmapNamed(IDR_TAB_ACTIVE_RIGHT);
- tab_active.l_width = tab_active.image_l->width();
- tab_active.r_width = tab_active.image_r->width();
+ tab_active_.image_l = rb.GetBitmapNamed(IDR_TAB_ACTIVE_LEFT);
+ tab_active_.image_c = rb.GetBitmapNamed(IDR_TAB_ACTIVE_CENTER);
+ tab_active_.image_r = rb.GetBitmapNamed(IDR_TAB_ACTIVE_RIGHT);
+ tab_active_.l_width = tab_active_.image_l->width();
+ tab_active_.r_width = tab_active_.image_r->width();
- tab_inactive.image_l = rb.GetBitmapNamed(IDR_TAB_INACTIVE_LEFT);
- tab_inactive.image_c = rb.GetBitmapNamed(IDR_TAB_INACTIVE_CENTER);
- tab_inactive.image_r = rb.GetBitmapNamed(IDR_TAB_INACTIVE_RIGHT);
- tab_inactive.l_width = tab_inactive.image_l->width();
- tab_inactive.r_width = tab_inactive.image_r->width();
+ tab_inactive_.image_l = rb.GetBitmapNamed(IDR_TAB_INACTIVE_LEFT);
+ tab_inactive_.image_c = rb.GetBitmapNamed(IDR_TAB_INACTIVE_CENTER);
+ tab_inactive_.image_r = rb.GetBitmapNamed(IDR_TAB_INACTIVE_RIGHT);
+ tab_inactive_.l_width = tab_inactive_.image_l->width();
+ tab_inactive_.r_width = tab_inactive_.image_r->width();
}