OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chrome/browser/ui/views/tabs/tab.h" | 5 #include "chrome/browser/ui/views/tabs/tab.h" |
6 | 6 |
7 #include <limits> | 7 #include <limits> |
8 | 8 |
9 #include "base/command_line.h" | 9 #include "base/command_line.h" |
10 #include "base/debug/alias.h" | 10 #include "base/debug/alias.h" |
(...skipping 909 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
920 if (clip.size().GetArea()) { | 920 if (clip.size().GetArea()) { |
921 SkRect intersection(path->getBounds()); | 921 SkRect intersection(path->getBounds()); |
922 intersection.intersect(RectToSkRect(clip)); | 922 intersection.intersect(RectToSkRect(clip)); |
923 path->reset(); | 923 path->reset(); |
924 path->addRect(intersection); | 924 path->addRect(intersection); |
925 } | 925 } |
926 } | 926 } |
927 } | 927 } |
928 | 928 |
929 bool Tab::GetTooltipText(const gfx::Point& p, base::string16* tooltip) const { | 929 bool Tab::GetTooltipText(const gfx::Point& p, base::string16* tooltip) const { |
930 // TODO(miu): Rectify inconsistent tooltip behavior. http://crbug.com/310947 | 930 // Note: Anything that affects the tooltip text should be accounted for when |
931 | 931 // calling TooltipTextChanged() from Tab::DataChanged(). |
932 if (data_.media_state != TAB_MEDIA_STATE_NONE) { | 932 *tooltip = chrome::AssembleTabTooltipText(data_.title, data_.media_state); |
933 *tooltip = chrome::AssembleTabTooltipText(data_.title, data_.media_state); | 933 return !tooltip->empty(); |
934 return true; | |
935 } | |
936 | |
937 if (data_.title.empty()) | |
938 return false; | |
939 | |
940 // Only show the tooltip if the title is truncated. | |
941 if (font_->GetStringWidth(data_.title) > GetTitleBounds().width()) { | |
942 *tooltip = data_.title; | |
943 return true; | |
944 } | |
945 return false; | |
946 } | 934 } |
947 | 935 |
948 bool Tab::GetTooltipTextOrigin(const gfx::Point& p, gfx::Point* origin) const { | 936 bool Tab::GetTooltipTextOrigin(const gfx::Point& p, gfx::Point* origin) const { |
949 origin->set_x(title_bounds_.x() + 10); | 937 origin->set_x(title_bounds_.x() + 10); |
950 origin->set_y(-views::TooltipManager::GetTooltipHeight() - 4); | 938 origin->set_y(-views::TooltipManager::GetTooltipHeight() - 4); |
951 return true; | 939 return true; |
952 } | 940 } |
953 | 941 |
954 ui::ThemeProvider* Tab::GetThemeProvider() const { | 942 ui::ThemeProvider* Tab::GetThemeProvider() const { |
955 ui::ThemeProvider* tp = View::GetThemeProvider(); | 943 ui::ThemeProvider* tp = View::GetThemeProvider(); |
(...skipping 165 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1121 return; | 1109 return; |
1122 const int mini_delta = kMiniTabRendererAsNormalTabWidth - GetMiniWidth(); | 1110 const int mini_delta = kMiniTabRendererAsNormalTabWidth - GetMiniWidth(); |
1123 const int ideal_delta = width() - GetMiniWidth(); | 1111 const int ideal_delta = width() - GetMiniWidth(); |
1124 const int ideal_x = (GetMiniWidth() - bounds->width()) / 2; | 1112 const int ideal_x = (GetMiniWidth() - bounds->width()) / 2; |
1125 bounds->set_x(bounds->x() + static_cast<int>( | 1113 bounds->set_x(bounds->x() + static_cast<int>( |
1126 (1 - static_cast<float>(ideal_delta) / static_cast<float>(mini_delta)) * | 1114 (1 - static_cast<float>(ideal_delta) / static_cast<float>(mini_delta)) * |
1127 (ideal_x - bounds->x()))); | 1115 (ideal_x - bounds->x()))); |
1128 } | 1116 } |
1129 | 1117 |
1130 void Tab::DataChanged(const TabRendererData& old) { | 1118 void Tab::DataChanged(const TabRendererData& old) { |
| 1119 if (data().media_state != old.media_state || data().title != old.title) |
| 1120 TooltipTextChanged(); |
| 1121 |
1131 if (data().blocked == old.blocked) | 1122 if (data().blocked == old.blocked) |
1132 return; | 1123 return; |
1133 | 1124 |
1134 if (data().blocked) | 1125 if (data().blocked) |
1135 StartPulse(); | 1126 StartPulse(); |
1136 else | 1127 else |
1137 StopPulse(); | 1128 StopPulse(); |
1138 } | 1129 } |
1139 | 1130 |
1140 void Tab::PaintTab(gfx::Canvas* canvas) { | 1131 void Tab::PaintTab(gfx::Canvas* canvas) { |
(...skipping 632 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1773 const gfx::ImageSkia& image) { | 1764 const gfx::ImageSkia& image) { |
1774 DCHECK_NE(scale_factor, ui::SCALE_FACTOR_NONE); | 1765 DCHECK_NE(scale_factor, ui::SCALE_FACTOR_NONE); |
1775 ImageCacheEntry entry; | 1766 ImageCacheEntry entry; |
1776 entry.resource_id = resource_id; | 1767 entry.resource_id = resource_id; |
1777 entry.scale_factor = scale_factor; | 1768 entry.scale_factor = scale_factor; |
1778 entry.image = image; | 1769 entry.image = image; |
1779 image_cache_->push_front(entry); | 1770 image_cache_->push_front(entry); |
1780 if (image_cache_->size() > kMaxImageCacheSize) | 1771 if (image_cache_->size() > kMaxImageCacheSize) |
1781 image_cache_->pop_back(); | 1772 image_cache_->pop_back(); |
1782 } | 1773 } |
OLD | NEW |