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/location_bar/ev_bubble_view.h" | 5 #include "chrome/browser/ui/views/location_bar/ev_bubble_view.h" |
6 #include "grit/theme_resources.h" | 6 #include "grit/theme_resources.h" |
| 7 #include "ui/views/controls/label.h" |
7 #include "ui/views/painter.h" | 8 #include "ui/views/painter.h" |
8 | 9 |
9 | 10 |
10 namespace { | 11 namespace { |
11 const int kBackgroundImages[] = IMAGE_GRID(IDR_OMNIBOX_EV_BUBBLE); | 12 const int kBackgroundImages[] = IMAGE_GRID(IDR_OMNIBOX_EV_BUBBLE); |
12 } | 13 } |
13 | 14 |
14 | 15 |
15 EVBubbleView::EVBubbleView(const gfx::FontList& font_list, | 16 EVBubbleView::EVBubbleView(const gfx::FontList& font_list, |
16 SkColor text_color, | 17 SkColor text_color, |
17 SkColor parent_background_color, | 18 SkColor parent_background_color, |
18 LocationBarView* location_bar) | 19 LocationBarView* location_bar) |
19 : IconLabelBubbleView(kBackgroundImages, NULL, IDR_OMNIBOX_HTTPS_VALID, | 20 : IconLabelBubbleView(kBackgroundImages, NULL, IDR_OMNIBOX_HTTPS_VALID, |
20 font_list, text_color, parent_background_color, true), | 21 font_list, text_color, parent_background_color, true), |
21 page_info_helper_(this, location_bar) { | 22 page_info_helper_(this, location_bar) { |
22 } | 23 } |
23 | 24 |
24 EVBubbleView::~EVBubbleView() { | 25 EVBubbleView::~EVBubbleView() { |
25 } | 26 } |
26 | 27 |
27 gfx::Size EVBubbleView::GetMinimumSize() { | 28 gfx::Size EVBubbleView::GetMinimumSize() { |
28 // Height will be ignored by the LocationBarView. | 29 return GetMinimumSizeForPreferredSize(GetPreferredSize()); |
29 gfx::Size minimum(GetPreferredSize()); | |
30 static const int kMinBubbleWidth = 150; | |
31 minimum.SetToMax(gfx::Size(kMinBubbleWidth, 0)); | |
32 return minimum; | |
33 } | 30 } |
34 | 31 |
35 bool EVBubbleView::OnMousePressed(const ui::MouseEvent& event) { | 32 bool EVBubbleView::OnMousePressed(const ui::MouseEvent& event) { |
36 // We want to show the dialog on mouse release; that is the standard behavior | 33 // We want to show the dialog on mouse release; that is the standard behavior |
37 // for buttons. | 34 // for buttons. |
38 return true; | 35 return true; |
39 } | 36 } |
40 | 37 |
41 void EVBubbleView::OnMouseReleased(const ui::MouseEvent& event) { | 38 void EVBubbleView::OnMouseReleased(const ui::MouseEvent& event) { |
42 page_info_helper_.ProcessEvent(event); | 39 page_info_helper_.ProcessEvent(event); |
43 } | 40 } |
44 | 41 |
45 void EVBubbleView::OnGestureEvent(ui::GestureEvent* event) { | 42 void EVBubbleView::OnGestureEvent(ui::GestureEvent* event) { |
46 if (event->type() == ui::ET_GESTURE_TAP) { | 43 if (event->type() == ui::ET_GESTURE_TAP) { |
47 page_info_helper_.ProcessEvent(*event); | 44 page_info_helper_.ProcessEvent(*event); |
48 event->SetHandled(); | 45 event->SetHandled(); |
49 } | 46 } |
50 } | 47 } |
| 48 |
| 49 gfx::Size EVBubbleView::GetMinimumSizeForLabelText( |
| 50 const base::string16& text) const { |
| 51 views::Label label(text, font_list()); |
| 52 return GetMinimumSizeForPreferredSize( |
| 53 GetSizeForLabelWidth(label.GetPreferredSize().width())); |
| 54 } |
| 55 |
| 56 gfx::Size EVBubbleView::GetMinimumSizeForPreferredSize(gfx::Size size) const { |
| 57 const int kMinCharacters = 10; |
| 58 size.SetToMin( |
| 59 GetSizeForLabelWidth(font_list().GetExpectedTextWidth(kMinCharacters))); |
| 60 return size; |
| 61 } |
OLD | NEW |