diff options
Diffstat (limited to 'chrome/browser/ui/views/tabs/tab.cc')
-rw-r--r-- | chrome/browser/ui/views/tabs/tab.cc | 80 |
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(); } |