| 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/status_bubble_views.h" | 5 #include "chrome/browser/ui/views/status_bubble_views.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 | 8 |
| 9 #include "base/bind.h" | 9 #include "base/bind.h" |
| 10 #include "base/i18n/rtl.h" | 10 #include "base/i18n/rtl.h" |
| (...skipping 416 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 427 SkIntToScalar(kShadowThickness), | 427 SkIntToScalar(kShadowThickness), |
| 428 SkIntToScalar(width - kShadowThickness), | 428 SkIntToScalar(width - kShadowThickness), |
| 429 SkIntToScalar(height - kShadowThickness)); | 429 SkIntToScalar(height - kShadowThickness)); |
| 430 SkPath path; | 430 SkPath path; |
| 431 path.addRoundRect(rect, rad, SkPath::kCW_Direction); | 431 path.addRoundRect(rect, rad, SkPath::kCW_Direction); |
| 432 canvas->DrawPath(path, paint); | 432 canvas->DrawPath(path, paint); |
| 433 | 433 |
| 434 // Draw highlight text and then the text body. In order to make sure the text | 434 // Draw highlight text and then the text body. In order to make sure the text |
| 435 // is aligned to the right on RTL UIs, we mirror the text bounds if the | 435 // is aligned to the right on RTL UIs, we mirror the text bounds if the |
| 436 // locale is RTL. | 436 // locale is RTL. |
| 437 int text_width = std::min( | 437 int text_width = std::min<int>( |
| 438 views::Label::font().GetStringWidth(text_), | 438 views::Label::font().GetStringWidth(text_), |
| 439 width - (kShadowThickness * 2) - kTextPositionX - kTextHorizPadding); | 439 width - (kShadowThickness * 2) - kTextPositionX - kTextHorizPadding); |
| 440 int text_height = height - (kShadowThickness * 2); | 440 int text_height = height - (kShadowThickness * 2); |
| 441 gfx::Rect body_bounds(kShadowThickness + kTextPositionX, | 441 gfx::Rect body_bounds(kShadowThickness + kTextPositionX, |
| 442 kShadowThickness, | 442 kShadowThickness, |
| 443 std::max(0, text_width), | 443 std::max(0, text_width), |
| 444 std::max(0, text_height)); | 444 std::max(0, text_height)); |
| 445 body_bounds.set_x(GetMirroredXForRect(body_bounds)); | 445 body_bounds.set_x(GetMirroredXForRect(body_bounds)); |
| 446 SkColor text_color = | 446 SkColor text_color = |
| 447 theme_service_->GetColor(ThemeProperties::COLOR_TAB_TEXT); | 447 theme_service_->GetColor(ThemeProperties::COLOR_TAB_TEXT); |
| (...skipping 369 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 817 } | 817 } |
| 818 | 818 |
| 819 void StatusBubbleViews::ExpandBubble() { | 819 void StatusBubbleViews::ExpandBubble() { |
| 820 // Elide URL to maximum possible size, then check actual length (it may | 820 // Elide URL to maximum possible size, then check actual length (it may |
| 821 // still be too long to fit) before expanding bubble. | 821 // still be too long to fit) before expanding bubble. |
| 822 gfx::Rect popup_bounds = popup_->GetWindowBoundsInScreen(); | 822 gfx::Rect popup_bounds = popup_->GetWindowBoundsInScreen(); |
| 823 int max_status_bubble_width = GetMaxStatusBubbleWidth(); | 823 int max_status_bubble_width = GetMaxStatusBubbleWidth(); |
| 824 url_text_ = gfx::ElideUrl(url_, view_->Label::font(), | 824 url_text_ = gfx::ElideUrl(url_, view_->Label::font(), |
| 825 max_status_bubble_width, languages_); | 825 max_status_bubble_width, languages_); |
| 826 int expanded_bubble_width =std::max(GetStandardStatusBubbleWidth(), | 826 int expanded_bubble_width =std::max(GetStandardStatusBubbleWidth(), |
| 827 std::min(view_->Label::font().GetStringWidth(url_text_) + | 827 std::min<int>(view_->Label::font().GetStringWidth(url_text_) + |
| 828 (kShadowThickness * 2) + kTextPositionX + | 828 (kShadowThickness * 2) + kTextPositionX + |
| 829 kTextHorizPadding + 1, | 829 kTextHorizPadding + 1, |
| 830 max_status_bubble_width)); | 830 max_status_bubble_width)); |
| 831 is_expanded_ = true; | 831 is_expanded_ = true; |
| 832 expand_view_->StartExpansion(url_text_, popup_bounds.width(), | 832 expand_view_->StartExpansion(url_text_, popup_bounds.width(), |
| 833 expanded_bubble_width); | 833 expanded_bubble_width); |
| 834 } | 834 } |
| 835 | 835 |
| 836 int StatusBubbleViews::GetStandardStatusBubbleWidth() { | 836 int StatusBubbleViews::GetStandardStatusBubbleWidth() { |
| 837 return base_view_->bounds().width() / 3; | 837 return base_view_->bounds().width() / 3; |
| 838 } | 838 } |
| 839 | 839 |
| 840 int StatusBubbleViews::GetMaxStatusBubbleWidth() { | 840 int StatusBubbleViews::GetMaxStatusBubbleWidth() { |
| 841 const ui::NativeTheme* theme = base_view_->GetNativeTheme(); | 841 const ui::NativeTheme* theme = base_view_->GetNativeTheme(); |
| 842 return static_cast<int>(std::max(0, base_view_->bounds().width() - | 842 return static_cast<int>(std::max(0, base_view_->bounds().width() - |
| 843 (kShadowThickness * 2) - kTextPositionX - kTextHorizPadding - 1 - | 843 (kShadowThickness * 2) - kTextPositionX - kTextHorizPadding - 1 - |
| 844 views::NativeScrollBar::GetVerticalScrollBarWidth(theme))); | 844 views::NativeScrollBar::GetVerticalScrollBarWidth(theme))); |
| 845 } | 845 } |
| 846 | 846 |
| 847 void StatusBubbleViews::SetBubbleWidth(int width) { | 847 void StatusBubbleViews::SetBubbleWidth(int width) { |
| 848 size_.set_width(width); | 848 size_.set_width(width); |
| 849 SetBounds(original_position_.x(), original_position_.y(), | 849 SetBounds(original_position_.x(), original_position_.y(), |
| 850 size_.width(), size_.height()); | 850 size_.width(), size_.height()); |
| 851 } | 851 } |
| 852 | 852 |
| 853 void StatusBubbleViews::CancelExpandTimer() { | 853 void StatusBubbleViews::CancelExpandTimer() { |
| 854 if (expand_timer_factory_.HasWeakPtrs()) | 854 if (expand_timer_factory_.HasWeakPtrs()) |
| 855 expand_timer_factory_.InvalidateWeakPtrs(); | 855 expand_timer_factory_.InvalidateWeakPtrs(); |
| 856 } | 856 } |
| OLD | NEW |