| Index: chrome/views/text_button.cc
|
| ===================================================================
|
| --- chrome/views/text_button.cc (revision 3391)
|
| +++ chrome/views/text_button.cc (working copy)
|
| @@ -143,8 +143,7 @@
|
| ////////////////////////////////////////////////////////////////////////////////
|
|
|
| TextButton::TextButton(const std::wstring& text)
|
| - : max_text_size_(CSize(0, 0)),
|
| - font_(ResourceBundle::GetSharedInstance().GetFont(
|
| + : font_(ResourceBundle::GetSharedInstance().GetFont(
|
| ResourceBundle::BaseFont)),
|
| color_(kEnabledColor),
|
| BaseButton(),
|
| @@ -158,24 +157,25 @@
|
| TextButton::~TextButton() {
|
| }
|
|
|
| -void TextButton::GetPreferredSize(CSize *result) {
|
| +gfx::Size TextButton::GetPreferredSize() {
|
| gfx::Insets insets = GetInsets();
|
|
|
| // Use the max size to set the button boundaries.
|
| - result->cx = max_text_size_.cx + icon_.width() + insets.width();
|
| - result->cy = std::max(static_cast<int>(max_text_size_.cy), icon_.height()) +
|
| - insets.height();
|
| + gfx::Size prefsize(max_text_size_.width() + icon_.width() + insets.width(),
|
| + std::max(max_text_size_.height(), icon_.height()) +
|
| + insets.height());
|
|
|
| if (icon_.width() > 0 && !text_.empty())
|
| - result->cx += kIconTextPadding;
|
| + prefsize.Enlarge(kIconTextPadding, 0);
|
|
|
| if (max_width_ > 0)
|
| - result->cx = std::min(max_width_, static_cast<int>(result->cx));
|
| + prefsize.set_width(std::min(max_width_, prefsize.width()));
|
| +
|
| + return prefsize;
|
| }
|
|
|
| -void TextButton::GetMinimumSize(CSize *result) {
|
| - result->cx = max_text_size_.cx;
|
| - result->cy = max_text_size_.cy;
|
| +gfx::Size TextButton::GetMinimumSize() {
|
| + return max_text_size_;
|
| }
|
|
|
| bool TextButton::OnMousePressed(const ChromeViews::MouseEvent& e) {
|
| @@ -185,10 +185,10 @@
|
| void TextButton::SetText(const std::wstring& text) {
|
| text_ = text;
|
| // Update our new current and max text size
|
| - text_size_.cx = font_.GetStringWidth(text_);
|
| - text_size_.cy = font_.height();
|
| - max_text_size_.cx = std::max(max_text_size_.cx, text_size_.cx);
|
| - max_text_size_.cy = std::max(max_text_size_.cy, text_size_.cy);
|
| + text_size_.SetSize(font_.GetStringWidth(text_), font_.height());
|
| + max_text_size_.SetSize(std::max(max_text_size_.width(), text_size_.width()),
|
| + std::max(max_text_size_.height(),
|
| + text_size_.height()));
|
| }
|
|
|
| void TextButton::SetIcon(const SkBitmap& icon) {
|
| @@ -227,7 +227,7 @@
|
| int available_width = width() - insets.width();
|
| int available_height = height() - insets.height();
|
| // Use the actual text (not max) size to properly center the text.
|
| - int content_width = text_size_.cx;
|
| + int content_width = text_size_.width();
|
| if (icon_.width() > 0) {
|
| content_width += icon_.width();
|
| if (!text_.empty())
|
| @@ -246,9 +246,9 @@
|
| int text_x = icon_x;
|
| if (icon_.width() > 0)
|
| text_x += icon_.width() + kIconTextPadding;
|
| - const int text_width = std::min(static_cast<int>(text_size_.cx),
|
| + const int text_width = std::min(text_size_.width(),
|
| width() - insets.right() - text_x);
|
| - int text_y = (available_height - text_size_.cy) / 2 + insets.top();
|
| + int text_y = (available_height - text_size_.height()) / 2 + insets.top();
|
|
|
| if (text_width > 0) {
|
| // Because the text button can (at times) draw multiple elements on the
|
| @@ -259,7 +259,7 @@
|
| // horizontally.
|
| //
|
| // Due to the above, we must perform the flipping manually for RTL UIs.
|
| - gfx::Rect text_bounds(text_x, text_y, text_width, text_size_.cy);
|
| + gfx::Rect text_bounds(text_x, text_y, text_width, text_size_.height());
|
| text_bounds.set_x(MirroredLeftPointForRect(text_bounds));
|
|
|
| // Draw bevel highlight
|
|
|